跳转到主要内容

Django的JavaScript URL处理,不会造成伤害。

项目描述

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

注意:此包是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

许可证

MIT

联系

@i_error


享受!

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-js-reverse-thread-0.0.1.tar.gz (20.3 kB 查看哈希值)

上传时间

构建分发

django_js_reverse_thread-0.0.1-py2.py3-none-any.whl (22.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下赞助商支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面