跳转到主要内容

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

Javascript url handling for Django that doesn’t hurt.

概述

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.betterliving_get_house('house', 12)

结果

/betterliving/house/12/

变更日志

0.9.0

新功能:支持Python 3.7

0.8.2

修复:Django 2.0.6中的修复错误破坏了django-js-reverse #65 感谢 kavdev

0.8.1

修复:#53 测试文件夹仍然存在于构建中。 => 在发布制作命令中添加了清理。

0.8.0

新功能:支持Django 2.0: #58 感谢 wlonk

修复:#53 不要将测试文件夹作为单独的文件夹安装。将其移入django_js_reverse命名空间。

0.7.3

新功能:支持Django 1.10

更改:将“production”分支重命名为“master”

修复:#48 - “在README中的全局对象名称中将False更改为‘window’。”感谢 karamanolev

修复:PR #45 - “修复:collectstatic_js_reverse使用消息。”感谢 ghedsouza

修复: PR #44 - “删除重复的 _get_url 调用” 感谢 razh

完整变更日志

需求

Python 版本

Django 版本

3.7

2.0, 1.11, 1.10, 1.9, 1.8

3.6

2.0, 1.11, 1.10, 1.9, 1.8

3.5

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'),
)

… 或者一个提供 URLs 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'),
)

… 或者一个提供 URLs 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>

作为模板标签使用

{% load js_reverse %}

<script type="text/javascript" charset="utf-8">
    {% js_reverse_inline %}
</script>

使用 JavaScript 中的 URLs

如果您的 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 对象以匹配以下示例中的关键字参数

Urls['betterliving-get-house']({ category_slug: 'house', entry_pk: 12 })
Urls['namespace:betterliving-get-house']({ category_slug: 'house', entry_pk: 12 })

选项

可选地,您可以通过 django 设置覆盖用于访问命名 URL 的默认 JavaScript 变量 'Urls'

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” 命名空间(例如,“foo:bar”)的 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'

运行测试套件

make test

许可证

MIT

联系

@i_error


享受吧!

项目详情


下载文件

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

源分布

django-js-reverse-webpack-0.0.1.tar.gz (19.1 kB 查看散列)

上传时间

构建分布

django_js_reverse_webpack-0.0.1-py2.py3-none-any.whl (20.2 kB 查看散列)

上传于 Python 2 Python 3