Django的JavaScript URL处理,不会造成伤害。
项目描述
注意:此包是https://github.com/ierror/django-js-reverse的分支。它包含原始包中尚未提供的功能和修复,但不会维护供公共使用。请依赖原始包。
Django的JavaScript URL处理,不会造成伤害。
概述
Django JS Reverse是一个小型Django应用,它使JavaScript中的命名URL处理变得简单且不烦人。
例如,您可以在JavaScript中检索一个命名URL
urls.py
url(r'^/betterliving/(?P<category_slug>[-\w]+)/(?P<entry_pk>\d+)/$', 'get_house', name='betterliving_get_house'),
在javascript中像
Urls.betterlivingGetHouse('house', 12)
结果
/betterliving/house/12/
需求
Python版本 |
Django版本 |
---|---|
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', )
与webpack一起使用
使用npm安装
npm install --save django-js-reverse
包含无缓存视图…
urlpatterns = patterns('', url(r'^jsreverse.json$', 'django_js_reverse.views.urls_json', name='js_reverse'), )
…或一个提供URL JSON的缓存视图
from django_js_reverse import views urlpatterns = patterns('', url(r'^jsreverse.json$', cache_page(3600)(views.urls_json), name='js_reverse'), )
将JavaScript包含在您的捆绑包中
// utils/djangoReverse.mjs import _ from 'lodash/fp'; import djangoJsReverse from 'django-js-reverse'; export default _.once( async () => { const res = await fetch('/jsreverse.json'); const data = await res.json(); return djangoJsReverse(data); } )
// somePlace.mjs import djangoReverse from './utils/djangoReverse'; (async () => { const urls = await djangoReverse(); const url = urls.someViewName('some-arg'); ... })();
作为静态文件使用
首先通过以下方式生成静态文件:
./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.betterlivingGetHouse('house', 12)
如果命名的URL包含无效的标识符,请使用方括号符号代替
Urls['betterliving-get-house']('house', 12) Urls['namespace:betterliving-get-house']('house', 12)
您还可以传递JavaScript对象以匹配以下示例中的关键字参数
Urls['betterliving-get-house']({ category_slug: 'house', entry_pk: 12 }) Urls['namespace:betterliving-get-house']({ category_slug: 'house', entry_pk: 12 })
选项
可选地,您可以通过Django设置覆盖默认的javascript变量“Urls”,该变量用于通过django设置访问命名URL
JS_REVERSE_JS_VAR_NAME = 'Urls'
可选地,您可以更改用于访问命名URL的javascript变量所附加的全局对象名称。默认为this
JS_REVERSE_JS_GLOBAL_OBJECT_NAME = 'window'
可选地,您可以通过Django设置禁用生成的javascript文件的压缩
JS_REVERSE_JS_MINIFY = False
默认情况下,包含所有命名空间
JS_REVERSE_EXCLUDE_NAMESPACES = []
要排除生成的javascript文件中的任何命名空间,请将它们添加到JS_REVERSE_EXCLUDE_NAMESPACES设置中
JS_REVERSE_EXCLUDE_NAMESPACES = ['admin', 'djdt', ...]
如果您只想包含特定的命名空间,请将它们添加到JS_REVERSE_INCLUDE_ONLY_NAMESPACES设置中提示:* 使用“” (空字符串) 对于没有命名空间的URL * 使用“foo0”仅包含“foo”命名空间中的URL,而不包含任何子命名空间(例如,“foo:bar”)
JS_REVERSE_INCLUDE_ONLY_NAMESPACES = ['poll', 'calendar', ...]
如果您在子路径下运行应用程序,collectstatic_js_reverse需要处理此问题。在您的Django设置中定义前缀
JS_REVERSE_SCRIPT_PREFIX = '/myprefix/'
默认情况下,collectstatic_js_reverse将其输出(reverse.js)写入您的项目的STATIC_ROOT。您可以更改输出路径
JS_REVERSE_OUTPUT_PATH = 'some_path'
运行测试套件
tox
许可证
联系
享受!
项目详情
下载文件
下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
哈希值 for django_js_reverse_thread-0.0.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 23f3e9427423b167111bed2dd368ad22494221b51d2c2b46a41d0d61a168b387 |
|
MD5 | 518958c491952fdbfa4ba0085ee41646 |
|
BLAKE2b-256 | f6f9f44678bbdcace9bcff1fb4c826637840f70f800b3925080d51876689d374 |