来自js文件的django模板url

Posted

技术标签:

【中文标题】来自js文件的django模板url【英文标题】:django template url from js file 【发布时间】:2017-09-05 20:44:42 【问题描述】:

在 django 项目中,我有 urls.py 喜欢 url(r'^data/$', get_data, name='data'),

我可以在我的模板中添加data.html,比如<a href='% url 'data' %'>Create New Data</a>,它工作正常。当我点击链接时,它会显示localhost://data

现在我在 data.js 中使用 jquery 和 datatable 动态显示表格,并且我可以使用以下代码制作可点击的表格单元格:

$('#table').DataTable( 
     "columnDefs": [
            
                "render": function (data, type, row)
                    return "<a href='blawblawblaw'>Click cell</a>";
             ,
             ]
)

我可以通过上面的 return 语句传递 url 吗?像

return "&lt;a href='% url 'data' %'&gt;Click cell&lt;/a&gt;";

如果我尝试上述操作,我会收到 The current URL, % url, didn't match any of these. 的错误 404 错误

【问题讨论】:

【参考方案1】:

因为 '% url 'data' %' 是 django 模板的语法,所以 Django 会在服务器端渲染 HTML,然后将渲染的 HTML 响应给客户端。

当我们在views.py中调用render(request, template)时,Django会填写模板中写的内容如:% url 'data' %

如果每个数据对象的 url 相同,则可以将 js 代码粘贴到模板中,使用 Django 呈现内容。

如果你的 url 是每个数据对象的动态变化,我会给数据对象附加信息字段如:"url""id",以便客户端可以获得正确的 URL 路径。

语法如:% .... % 在 Django 中用于服务器端,而不用于客户端。你可以打开开发者工具,看看返回值,你会看到原字符串:"&lt;a href='blawblawblaw'&gt;Click cell&lt;/a&gt;"

【讨论】:

% block content % &lt;table id="table" class="table table-striped"&gt; % endblock content % 这是我当前的data.html,表格是从data.js 动态呈现的,所以我不确定如何在data.html 中为表格单元格添加% url 'data' % 对于第一个,您的意思是将data.js 复制到data.html 中吗?对于第二个,你能举个例子吗。 如果你的 url 中的 URL 是 const,你可以将你的 js body 粘贴到模板中,使用 Django 渲染函数来渲染你的数据。如果 js 中每个数据对象的 URL 不同,则应该在数据对象中添加一些 url 信息,然后在 js 中检索这些信息。

以上是关于来自js文件的django模板url的主要内容,如果未能解决你的问题,请参考以下文章

来自 django 基本模板文件中 url 的变量

Django:包含来自另一个应用程序的模板

Django没有在404页面上应用来自应用程序的CSS文件

Django block.super 在特定情况下不起作用

Django模板引擎和外部js文件

Django/jQuery:处理模板继承和 JS 文件加载