对django的javascript url处理不会造成伤害。
django-js-reverse的Python项目详细描述
django的javascript url处理不会造成伤害。
概述
django js reverse是一个小型django应用程序,它使url处理 named urls在javascript中简单而不烦人。
例如,您可以检索命名的url:
网址.py:
url(r'^/betterliving/(?P<category_slug>[-\w]+)/(?P<entry_pk>\d+)/$', 'get_house', name='betterliving_get_house'),
在javascript中,例如:
Urls.betterliving_get_house('house', 12)
结果:
/betterliving/house/12/
变更日志
- 0.9.0
新增:对python 3.7的支持
新增:支持django 2.2
新:单元测试没有斜杠的脚本前缀,更改了url conf`72<;https://github.com/ierror/django-js-reverse/issues/72>;。`_ 谢谢你graingert
修正:“根urlconf不考虑”#73#74 谢谢你LuukOost和graingert
重构:“将模板逻辑移到视图”#64 谢谢你graingert
修正:“现在使用looseversion而不是strictversion来避免rc版本的问题”#67 谢谢你kavdev
- 0.8.2
- 修复:django 2.0.6中的错误修复已破坏django js reverse#65 谢谢你kavdev
- 0.8.1
- 修复:生成中仍然存在#53的tests文件夹。=>;向release make命令添加了清除功能。
- 0.8.0
修复:#53-不要将tests文件夹作为单独的文件夹安装。移动到django_js_reverse命名空间中。
要求
Python version | Django versions |
---|---|
3.7 | 2.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8 |
3.6 | 2.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8 |
3.5 | 2.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8 |
3.4 | 2.0, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6, 1.5 |
2.7 | 1.11, 1.10, 1.9, 1.8, 1.7, 1.6, 1.5 |
安装
使用pip…
安装pip install django-js-reverse
…或者从github克隆项目。
git clone https://github.com/ierror/django-js-reverse.git
将'django_js_reverse'添加到INSTALLED_APPS设置中。
INSTALLED_APPS = ( ... 'django_js_reverse', )
用作静态文件
首先通过
./manage.py collectstatic_js_reverse
如果您更改了一些URL或添加了一个应用程序,并希望更新reverse.js文件, 再次运行命令。
在此之后,将文件添加到模板中
<script src="{% static 'django_js_reverse/js/reverse.js' %}"></script>
与视图一起使用
不包含缓存视图…
urlpatterns = patterns('', url(r'^jsreverse/$', 'django_js_reverse.views.urls_js', name='js_reverse'), )
…或者一个缓存的,提供url javascript的
from django_js_reverse.views import urls_js urlpatterns = patterns('', url(r'^jsreverse/$', cache_page(3600)(urls_js), name='js_reverse'), )
在模板中包含javascript
<script src="{% url js_reverse %}" type="text/javascript"></script>
或者,如果您使用的是django>;1.5
<script src="{% url 'js_reverse' %}" type="text/javascript"></script>
用作模板标记
您可以将js_reverse javascript内联到模板中, 但是不建议使用内联javascript,因为它 将无法部署安全内容安全策略。 见django-csp
{% load js_reverse %} <script type="text/javascript" charset="utf-8"> {% js_reverse_inline %} </script>
在javascript中使用url
如果您的url名称是有效的javascript标识符([$a-z\[-z\$]*)i 您可以使用点符号来访问它们:
Urls.betterliving_get_house('house', 12)
如果指定的url包含无效的标识符,请使用方括号 取而代之的是符号:
Urls['betterliving-get-house']('house', 12) Urls['namespace:betterliving-get-house']('house', 12)
您还可以传递javascript对象以匹配关键字aguments,如 示例如下:
Urls['betterliving-get-house']({ category_slug: 'house', entry_pk: 12 }) Urls['namespace:betterliving-get-house']({ category_slug: 'house', entry_pk: 12 })
选项
或者,可以覆盖使用的默认javascript变量“url” 通过django设置访问命名的url
JS_REVERSE_JS_VAR_NAME = 'Urls'
或者,您可以更改全局对象的名称javascript变量
用于访问附加到的命名URL。默认值是this
JS_REVERSE_JS_GLOBAL_OBJECT_NAME = 'window'
或者,可以禁用生成的javascript文件的切碎。 按django设置
JS_REVERSE_JS_MINIFY = False
默认情况下,包含所有命名空间
JS_REVERSE_EXCLUDE_NAMESPACES = []
要从生成的javascript文件中排除任何名称空间,请将它们添加到js\u reverse\u exclude\u名称空间设置
JS_REVERSE_EXCLUDE_NAMESPACES = ['admin', 'djdt', ...]
如果只想包含特定的名称空间,请将它们添加到js_reverse_include_only_名称空间设置中 提示: *对没有命名空间的URL使用“”(空字符串) *使用“foo0”只包括来自“foo”namaspace的url,而不包括来自任何子名称空间(例如“foo:bar”)
JS_REVERSE_INCLUDE_ONLY_NAMESPACES = ['poll', 'calendar', ...]
如果在子路径下运行应用程序,collectStatic_js_reverse需要处理这个问题。 在django设置中定义前缀:
JS_REVERSE_SCRIPT_PREFIX = '/myprefix/'
默认情况下,collectStatic_js_reverse将其输出(reverse.js)写入项目的静态根目录。 您可以更改输出路径:
JS_REVERSE_OUTPUT_PATH = 'some_path'
运行测试套件
make test