在客户端世界中公开和执行Django URL的逆向查找。
项目描述
Django-js-routes 是一个Django应用程序,允许在客户端执行Django命名URL模式的公开和逆向查找。
主要需求
Python 3.6+, Django 3.2+
安装
要安装Django-js-routes,请使用以下pip命令
$ pip install django-js-routes
安装包后,您需要将应用程序添加到项目设置模块中的INSTALLED_APPS
INSTALLED_APPS = (
# all other apps...
'js_routes',
)
您可以通过设置JS_ROUTES_INCLUSION_LIST
配置项来定义要向客户端公开的URL模式或URL命名空间。此设置允许定义哪些URL应该序列化并通过生成的和/或导出的JavaScript辅助程序提供给客户端。此列表应仅包含URL模式名称或命名空间。以下是一个示例:
JS_ROUTES_INCLUSION_LIST = [
'home',
'catalog:product_list',
'catalog:product_detail',
]
请注意,如果将命名空间包含在此列表中,则所有底层URL将通过生成的JavaScript辅助程序向客户端公开。Django-js-routes在设计上是安全的,因为只有您在此包含列表中配置的URL将在客户端公开。
配置要公开的URL列表后,您可以将{% js_routes %}
标签添加到基本模板中,以确保在需要时可以访问JavaScript辅助程序。
{% load js_routes_tags %}
<html>
<head>
</head>
<body>
<!-- At the bottom of the document's body... -->
{% js_routes %}
</body>
</html>
用法
您可以通过生成的window.reverseUrl
函数来反转通过JS_ROUTES_INCLUSION_LIST
设置配置的URL模式,这基本上与在Django侧使用reverse
相同。
window.reverseUrl('home');
window.reverseUrl('catalog:product_list');
window.reverseUrl('catalog:product_detail', productId);
window.reverseUrl('catalog:product_detail', { pk: productId });
设置
JS_ROUTES_INCLUSION_LIST
默认值:[]
JS_ROUTES_INCLUSION_LIST
配置项允许定义通过生成的JavaScript辅助程序向客户端公开的URL模式和URL命名空间。
高级功能
仅在Django模板中插入序列化的URL
默认情况下,{% js_routes %}
模板标签仅允许触发序列化URL的生成(存储在window
对象上的JavaScript对象中),并使用Django的static
模板标签将JavaScript URL解析器函数包含在您的HTML中。实际上,{% js_routes %}
语句的标准用法相当于:
{% js_routes routes_only=True %}
<script src="{% static 'js/routes/resolver.js' %}"></script>
routes_only
选项允许仅在{% js_routes %}
的输出中包含序列化URL。它允许您使用另一个static
语句包含与Django-js-routes一起提供的JavaScript URL解析器。这还允许您在需要时缓存{% js_routes routes_only=True %}
语句的输出(因此序列化URL不会为每个请求生成)。
导出JavaScript路由解析器
如前所述,{% js_routes %}
模板标签触发序列化URL的生成并在最终HTML中包含客户端URL解析器。这种行为的一个缺点是,每次渲染HTML模板时都需要生成序列化URL。
相反,可以将整个序列化URL列表和URL解析器函数放入单个JavaScript模块文件中。这可以通过使用dump_routes_resolver
命令实现,如下所示:
$ python manage.py dump_routes_resolver --format=default --output=my_exported_resolver.js
--output
选项允许指定序列化路由和解析器函数应保存到的文件,而--format
选项允许指定要使用的JavaScript格式。
--format
接受以下值:
default
将路由作为与window
对象关联的对象包含,URL解析器通过window.reverseUrl
函数提供(这对应于标准使用{% js_routes %}
模板标签的行为)。es6
允许将路由和URL解析器保存为ES6模块,其中reverseUrl
函数是默认导出。
许可协议
MIT。有关更多详细信息,请参阅LICENSE
。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
django-js-routes-0.2.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 67f4fbd6d45cf0c0c5adae5e45e6de2aa4a7e2505e073cb5550ce2503ea986aa |
|
MD5 | 19eff7c32555e396e3ee0e132320c81c |
|
BLAKE2b-256 | acdefbf600fb54c2ee89fc87a8dd731a28b9e14e406ff54161b57aa77a575a00 |
django_js_routes-0.2.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9adc2f5e1874d238ec3004dbde3cd0220bcef56669a607847502f1f34c2ddccd |
|
MD5 | 6d8c20fc7d21378a23c9cbaf016b60e1 |
|
BLAKE2b-256 | d35b6bf7cfd2325581c3ad9cc91efc85ab020aacd4a83a4d43f35e2d4d3c326f |