django的javascript模型字段选择处理。

django-js-choices的Python项目详细描述


Packaging: poetryCode style: black

概述

django js choices是一个小型django应用程序,用于处理 model field choices在javascript中很简单。

例如,给定模型…

# models.py:classStudent(models.Model):FRESHMAN='FR'SOPHOMORE='SO'JUNIOR='JR'SENIOR='SR'YEAR_IN_SCHOOL_CHOICES=((FRESHMAN,'Freshman'),(SOPHOMORE,'Sophomore'),(JUNIOR,'Junior'),(SENIOR,'Senior'),)year_in_school=models.CharField(max_length=2,choices=YEAR_IN_SCHOOL_CHOICES,default=FRESHMAN,)

…这些选项可以在javascript中访问。

Choices.pairs("year_in_school");

结果:

[{value:"FR",label:"Freshman"},{value:"SO",label:"Sophomore"},{value:"JR",label:"Junior"},{value:"SR",label:"Senior"}]

也可以访问显示值。

Choices.display("year_in_school","FR")Choices.display("year_in_school",{"year_in_school":"FR"})

在这两种情况下,结果都是

"Freshman"

要求

  • Python(2.7+,3.5+)
  • Django(1.5+)

安装

使用pip

安装
pip install django-js-choices

…或者从github克隆项目。

git clone https://github.com/lorinkoz/django-js-choices.git

'django_js_choices'添加到INSTALLED_APPS设置中。

INSTALLED_APPS=(...'django_js_choices',)

用作静态文件

首先通过

python manage.py collectstatic_js_choices
如果您添加应用程序、模型或更改某些现有选项, 您可以通过再次运行该命令来更新choices.js文件。

选项文件总是以区域设置前缀创建的:choices-en-us.js 但您可以将任何语言环境传递给命令…

python manage.py collectstatic_js_choices --locale es

…生成的文件将是choices-es.js

在此之后,将文件添加到模板中。

<scriptsrc="{% static 'django_js_choices/js/choices-es.js' %}"></script>

与视图一起使用

包括非缓存视图…

fromdjango_js_choices.viewsimportchoices_jsurlpatterns=[url(r'^jschoices/$',choices_js,name='js_choices'),]

…或使用缓存保存一些bandwith。

fromdjango_js_choices.viewsimportchoices_jsurlpatterns=[url(r'^jschoices/$',cache_page(3600)(choices_js),name='js_choices'),]

在模板中包含javascript。

<scriptsrc="{% url 'js_choices' %}"type="text/javascript"></script>

用作模板标记

如果要内联生成javascript代码,请使用template标记。

{% load js_choices %}
<scripttype="text/javascript"charset="utf-8">{%js_choices_inline%}</script>

使用javascript中的选项

对于每个有选择的模型字段,它们将通过以下方式提供 名字。

Choices.pairs("<app_label>_<model_name>_<field_name>")Choices.pairs("<model_name>_<field_name>")Choices.pairs("<field_name>")

如果这些名称与其他模型字段冲突, 冲突的名称将无法访问以防止歧义。

选项

可选地,您可以覆盖使用的默认javascript变量'choices' 通过django设置访问选项。

JS_CHOICES_JS_VAR_NAME='Choices'

或者,您可以更改全局对象的名称javascript 用于访问选项的变量附加到。默认值是this

JS_CHOICES_JS_GLOBAL_OBJECT_NAME='window'

或者,可以禁用生成的javascript文件的切碎。 通过django设置。

JS_CHOICES_JS_MINIFY=False

默认情况下,collectStatic_js_choices写入其输出(choices en us.js) 到项目的静态根目录,但可以更改输出路径。

JS_CHOICES_OUTPUT_PATH='some/other/path'

运行测试套件

尚未提供

学分

灵感来源(从概念上讲来源) django-js-reverse

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException