用于JavaScript的Django reverse()

dir*_*r01 23 javascript django url reverse

在我的项目中,我有很多Ajax方法,使用外部客户端脚本(我不想将JavaScript包含在模板中!)和更改URL对我来说很麻烦,因为我需要手动更改Ajax调用中的URL .

有没有办法{% url %}在JavaScript中模拟templatetag 的行为?

例如,从^ajax脚本开始和稍后在脚本中打印urlpatterns会将模式替换为实际值吗?

这就是我的想法,我的问题是 - 是否有任何常见的做法来做这样的事情?也许一些可重用的应用程序?我也很乐意阅读您的任何建议和相关想法.

更新1: 我说的是计算网址,而不是静态网址:

url(r'^ajax/delete/(?P<type>image|audio)/(?P<item_id>\d+)/from/set/(?P<set_id>\d+)/$', 'blog.ajax.remove_item_from_set'),
Run Code Online (Sandbox Code Playgroud)

kod*_*sin 20

尝试创建javascript帮助函数(在django模板中)以生成url字符串.在简单的形式,他们可能看起来像这样:

function generete_some_url(id){
    return "{% url some_url itemid=112233 %}".replace("112233", id);
}
Run Code Online (Sandbox Code Playgroud)

也许这有一些其他影响,但我认为它应该有效.


oza*_*zan 13

将JavaScript放入模板有什么问题?

您经常要在HTML模板中调用初始化函数,那么为什么不传递包含您将使用的URL的对象?

<script>
MYGLOBAL.mymodule.init({
    fancy_ajax_url: '{% url fancy %}',
    fancier_ajax_url: '{% url fancier %}'
});
</script>
Run Code Online (Sandbox Code Playgroud)

如果你发现自己以这种方式传递了很多变量,或者想要在你的HTML模板中使用JavaScript,那么为什么不通过Django的模板引擎渲染你的脚本呢?请记住,Django模板不仅适用于HTML文档 - 通常有助于将模板用于纯文本,XML,JSON,甚至是JavaScript.担心表现?然后缓存结果.

  • 这种方法的缺点是无法使用视图参数. (4认同)

小智 12

我创建了一个机制,在Django项目中构建一个url模式列表,并在Javascript文件中输出.它是django-js-utils的一个分支.

回购链接在这里:https: //github.com/Dimitri-Gnidash/django-js-utils


dir*_*r01 10

https://github.com/mlouro/django-js-utils

dutils是一个小型实用程序库,旨在为JavaScript/Django开发人员提供一些实用程序,这些实用程序将帮助在Django后端上开发RIA.

它目前支持以下功能:

  • 生成Django网址的反向方法......


use*_*588 6

为此,我们创建了一个名为django-js-reverse的小应用程序.

例如,您可以检索已命名的URL

urls.py:

url(r'^/betterliving /(?P [ - \w] +)/(?P\d +)/ $','get_house',name ='betterliving_get_house'),

在javascript中像:

Urls.betterliving_get_house('house',12)

结果:

/ betterliving /房子/ 12 /