对django的javascript url处理不会造成伤害。

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


https://img.shields.io/pypi/v/django-js-reverse.svghttps://img.shields.io/travis/ierror/django-js-reverse/master.svgCoverage Statushttps://img.shields.io/github/license/ierror/django-js-reverse.svghttps://img.shields.io/pypi/wheel/django-js-reverse.svg

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 谢谢你LuukOostgraingert

重构:“将模板逻辑移到视图”#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

新:对django 2.0的支持:#58 谢谢你wlonk

修复:#53-不要将tests文件夹作为单独的文件夹安装。移动到django_js_reverse命名空间中。

Full changelog

要求

Python versionDjango versions
3.72.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8
3.62.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8
3.52.2, 2.1, 2.0, 1.11, 1.10, 1.9, 1.8
3.42.0, 1.11, 1.10, 1.9, 1.8, 1.7, 1.6, 1.5
2.71.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

许可证

MIT

联系人

@i_error


享受吧!

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

推荐PyPI第三方库


热门话题
存储\在java字符串变量中(特殊字符)   安卓 java。lang.ClassCastException。如何删除?   JScrollPane中JTextArea上的java滚动条不起作用   java解析字符串到日期对象更改值   加载多个资源log4j的java问题。性质   java实例化类<?>变量   java Liferay,如何获取根记录器?   java如何在Android中使用多个带有Tab片段的按钮?   是否有支持条件格式的Java轻量级模板解决方案?   java拖放ListView行   java在方法之前插入return会导致VerifyError而不显示消息   通过在JAVA中传递组名从Active Directory获取电子邮件地址   java Eclipse对自定义facelets标记的支持   通过拖动鼠标滚动JScrollPane(Java swing)   使用自定义包结构(Maven)的java访问资源文件夹   java如何初始化spring jar和starter文件?   enums Java:具有@Enumerated(字符串),但仍然获得ClassCastException   java我可以使用注释在注释后调用方法吗?   java为什么程序不能传递这些断言?