首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在客户端Javascript中调用Django `verse`

在客户端Javascript中调用Django `verse`
EN

Stack Overflow用户
提问于 2010-04-28 03:30:59
回答 10查看 20.4K关注 0票数 53

我在Appengine上使用Django。我在任何地方都使用django reverse()函数,尽可能保持一切正常。

然而,在我的客户端javascript上应用它时遇到了问题。有一个JS类可以根据传入的ID加载一些数据。有没有一种标准的方法来不硬编码这些数据应该来自的URL?

代码语言:javascript
复制
var rq = new Request.HTML({
    'update':this.element,
}).get('/template/'+template_id+'/preview'); //The part that bothers me.
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-10-08 05:21:36

最合理的解决方案似乎是在JavaScript文件中传递一个URL列表,并在客户机上提供一个JavaScript等效于reverse()。唯一的反对意见可能是整个URL结构都暴露了。

下面是这样一个function (来自这个question)。

票数 9
EN

Stack Overflow用户

发布于 2012-06-29 21:43:13

还有另一种方法,它不需要公开整个url结构或解析每个url的ajax请求。虽然它不是真的很漂亮,但它以简单的方式击败了其他人:

代码语言:javascript
复制
var url = '{% url blog_view_post 999 %}'.replace (999, post_id);

(当然,blog_view_post urls本身不能包含神奇的999编号。)

票数 35
EN

Stack Overflow用户

发布于 2016-06-03 01:16:47

经过一番努力,我想出了一个稍有不同的解决方案。

在我的例子中,我想要一个外部JS脚本在按钮单击时调用AJAX调用(在执行一些其他处理之后)。

在HTML中,我使用了HTML-5自定义属性,如下所示

代码语言:javascript
复制
<button ... id="test-button" data-ajax-target="{% url 'named-url' %}">

然后,在javascript中,简单地做了

代码语言:javascript
复制
$.post($("#test-button").attr("data-ajax-target"), ... );

这意味着Django的模板系统为我完成了所有的reverse()逻辑。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2724383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档