如何从 Django 中的 js html builder 获取 url?
Posted
技术标签:
【中文标题】如何从 Django 中的 js html builder 获取 url?【英文标题】:How can I get the url working from js html builder in Django? 【发布时间】:2017-05-29 06:04:39 【问题描述】:我目前正在使用 Django 构建一个 Web 应用程序。 我已经使用 JS 构建了一个日历,并且我基本上是从 Js 文件构建 html。
我正在尝试在每个日历日中包含 href。例如 : % url 'calendarDay' day=28 month=12 year=2016 % 应该是 28/12/2016 日期。
如果我尝试从模板中的其他任何地方访问此 url,它会起作用。由于某种原因,当我从 js 传递 html 时它不起作用。
这是我的网址中的内容:
url(r'^calendar/$', views.calendar, name='calendar'),
url(r'^calendar/(?P<day>\w+)/(?P<month>\w+)/(?P<year>\w+)/$',views.calendar, name = 'calendarDay'),
这是我的 js builder 函数(构建上个月天数的部分):
if (FirstDay.getDay()==0)
for (var i=LastMonthDays-5; i <= LastMonthDays; i++)
href="<a href=\"% url 'calendarDay' day="+i+" month="+(pastMonth.getMonth()+1)+" year="+pastMonth.getFullYear()+" %\">"
html +=href+ "<li>"+(i)+"</li></a>";
这是我检查页面时 html 文件的样子:
<a href="% url 'calendarDay' day=28 month=12 year=2016 %"><li>28</li></a>
由于某种原因,它获取的网址是:http://127.0.0.1:8000/calendar/%7B%%20url%20'calendarDay'%20day=28%20month=12%20year=2016%20%%7D
当然我得到以下错误:
当前 URL,calendar/% url 'calendarDay' day=28 month=12 year=2016 %,与其中任何一个都不匹配。
这可能是什么问题?
【问题讨论】:
DTL 在 JS 文件中不起作用......因为它们不是模板。 但是它将html代码传递到模板中。如果我检查文件,我会得到我应该得到的 不,它将html代码传递到呈现的html中 否则如何实现?因为整个日历html文件都是从这里渲染出来的。 【参考方案1】:模板标签将在 javascript 之前在服务器端呈现。你应该创建一个 javascript 函数来生成你的日历 url。
【讨论】:
以上是关于如何从 Django 中的 js html builder 获取 url?的主要内容,如果未能解决你的问题,请参考以下文章
Django - 如何将 javascript 变量从另一个文件加载到模板
如何在单独的 js 文件中使用访问 django 模板变量,而不是在同一个 html 文件中包含小脚本块?
django的views直接传一段html代码调用模板中的js函数。