在我的项目中,我有很多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) 我想使用Django模板变量渲染一些静态文件(特别是*.js).我相信这是一个常见的用例,尤其是在做任何AJAX-y时; 我不想在我的.js文件中硬编码AJAX网址,只是想在我的.html文件中对它们进行硬编码.Buuuut当然我不希望那些静态文件在每个客户端请求都必须通过模板引擎运行,因为这会很慢.我指的是诸如URL(在编译/部署之后不会改变)或静态(非db)模型属性之类的东西.(我想有些用例可能会在运行时更改这些内容 - 毕竟这是Python,但我认为它们并不常见).对于一些可能的模板变量(例如模型字段),当然必须在客户端请求时呈现文件,但这不是我所说的.
因此,通过模板引擎渲染我的一些静态文件,对于可能的模板变量的子集,可能同时也是如此有意义collectstatic吗?
据我所知,目前情况并非如此.要清楚,我正在寻找的是在编译/部署时通过模板引擎呈现静态文件的解决方案,以便在"客户端请求时"它们实际上是普通的旧静态文件.
这种方法可以避免这些黑客攻击:
免责声明:
所以:
collectstatic(比如一个pre-collectstatic钩子),允许人们在"收集"它们之前通过模板引擎渲染某些静态文件?编辑:还没有回答......这是一个非常愚蠢的问题,我错过了一些明显的东西?如果是这样......继续告诉我......
假设我的一个 urlpatterns 看起来像这样。
url('^objects/update/(?P<pk>\d+)$', views.UpdateView.as_view(), name = 'update-object'),
我需要根据所选对象将用户重定向到更新页面(对象列表是使用 Ajax 填充的)。所以我想将命名的 url模式传递给 JavaScript,以便在客户端构建实际的 url。
我想要实现的目标的示例:
'update-objects'给函数(?P<pk>..)为{pk}objects/update/{pk}有小费吗?谢谢
更清楚地说:在渲染时,我无法进行 url 反转,因为 PK 还不知道。我需要制作一种 javascript-urlpattern ,稍后将其转换为真实的 url (即我的 JS 代码将用实际的 pk 值替换 {pk} 部分)