获取javascript变量'Django url模板标记中的s值
Get javascript variable's value in Django url template tag
众所周知,有一种DRY方式可以通过使用django模板标签"URL"来引导到URL,比如
{% url "someview" arg1=X %}
这里,我希望"X"是一个javascript变量的值,比如tmp
。但以下内容不起作用
<script>
...{% url "someview" arg1=tmp %}...
</script>
我应该如何获取模板标记中的值?
我发现了一个在大多数情况下都有效的技巧:
var url_mask = "{% url 'someview' arg1=12345 %}".replace(/12345/, tmp.toString());
它很干净,而且不违反DRY原则。
只是说清楚了,这样下一个读者就可以有一个全面的解决方案。关于这个问题,这就是我如何使用Mike Lee解决方案来处理一个示例案例,该案例使用Javascript重定向到一个新页面,该页面的变量名为tmp:
window.location = "{% url 'your_view_name' 1234 %}".replace(/1234/, tmp.toString());
一种简单的方法是
<div id="test" style="display: none;">
{% url 'some_url:some_sub_url'%}
</div>
<script>
url_mask = $( "#test" ).html()
</script>
var name = "{% url 'your_view_name' pk=0 %}".replace('0', name_variable);
类似的解决方案使用concat
而不是replace
,因此可以避免id
冲突:
var pre_url = "{% url 'topology_json' %}";
var url = pre_url.concat(tool_pk, '/', graph_depth, '/');
但您需要一个非参数url来保持Django对pre_url
的满意,因为加载时间评估,我的urls.py
是:
urlpatterns = [
url(r'^topology_json/$',
views.topology_json,
name='topology_json'),
url(r'^topology_json/(?P<tool_id>[0-9]+)/(?P<depth>[0-9]+)/$',
views.topology_json,
name='topology_json'),
...
]
并且视图中的参数具有合适的默认值,因此views.py
:
def topology_json(request, tool_id=None, depth=1):
"""
JSON view returns the graph in JSON format.
"""
if tool_id:
tool = get_object_or_404(Tool, pk=tool_id)
topology = get_graph(str(tool), int(depth))
else:
...
Django还有1.11。
我认为您不能从JavaScript中使用{% url %}
的命名参数,但您可以使用位置参数或查询字符串参数:
<script type="text/javascript">
var tmp = window.location.hash, //for example
url = {% url '[url_name]' %} + tmp + '/';
</script>
但是,在最初渲染模板时,只能执行一次此操作。
相关文章:
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 需要url导航从DropDown Value onClick按钮传递url变量
- Google Script HtmlService,通过多个选项卡复制URL变量
- 将链接 URL 变量传递给 javascript
- 使用 ASP.NET 将 URL 变量传递给 Javascript 函数
- Angular ui路由器,通过url/url变量保存状态
- selectlist值的ColdFusion URL变量
- 在Javascript数组内部调用URL变量
- 在搜索中突出显示关键字会破坏 URL 变量的传递
- 通过 $_GET 将 URL 变量传递给 Javascript
- 文件路径及其 URL 变量在连接时被缩短
- 在 Django 视图中渲染 URL 变量
- 通过javascript将url变量添加到href链接中
- 从 URL 变量填充电子邮件字段
- 将长混合字符串变量从 javascript 传递到 GET url 变量的 url 友好方法是什么?
- 从 iFrame 中提取 url 变量
- 无法使用包含 url 变量的 javascript 函数刷新到页面底部
- Google上的URL变量'我的地图'
- Java脚本URL加载器和URL变量
- Javascript Bookmarklet获取Url变量,打开多个搜索窗口