对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 JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView