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 |