如何从 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 变量从另一个文件加载到模板

bui上手体验

如何在单独的 js 文件中使用访问 django 模板变量,而不是在同一个 html 文件中包含小脚本块?

django的views直接传一段html代码调用模板中的js函数。

如何将 Django 3 中的 mp4 视频流式传输到 Vue.js

Django 1.11 如何从保存在 CMS 站点模型中的 HTML 中显示模板变量