【问题标题】:Django dynamic url resolve in javascript codejavascript代码中的Django动态url解析
【发布时间】:2020-04-11 20:34:53
【问题描述】:

我的 javascript 中有这段代码。

let link = <a class='${!questionnaire.exam ? 'ajax-btn' : ''} card__item ${!questionnaire.active ? 'card__item--inactive' : ''}' href="{% url '${questionnaire.id}' %}"></a>

但是,在我使用 javascript 在我的 html 中插入此代码后,&lt;a&gt;tag 的 url 无法正确解析。

【问题讨论】:

    标签: django django-templates django-urls


    【解决方案1】:

    如果您希望将 js 变量传递给模板代码,那么您确实需要了解前端(客户端)和后端(服务器)之间的区别——实际上是了解整个 HHTP 协议。

    您的模板由服务器(后端)呈现,然后生成的 HTML 作为 HTTP 响应的内容返回到浏览器(前端)。然后,如果 HTML 中有一些 js 代码,并且您的浏览器知道如何解释 js,则 js 代码将由浏览器(前端)执行。至此,请求/响应周期结束,通信关闭(直到下一个请求)等等。

    所以当然,你想做的事是行不通的......

    【讨论】:

    • 我用jquery html()替换html内容,在我的AJAX成功方法中。然后通信不密切,是吗?
    • 请重新阅读我的回答。模板代码在服务器上执行,js代码在浏览器上执行。这意味着在执行 js 代码时,您不在 Django 模板中,而是在生成的标记中,并且不再需要执行模板代码(无论如何也没有任何东西可以执行)。这与 Ajax(“ajax”请求只是一个 HTTP 请求,句号)或 JQuery 无关。实际上,这与 Django 模板本身无关,任何生成 HTML 的服务器端代码都一样。
    • 是的,当您在 ajax 成功处理程序中时,模板已经呈现,生成的 HTML 作为 HTTP 响应的一部分返回并且通信已经关闭。 “Ajax”只是简单的 HTTP 请求/响应周期。真的,了解 HTTP 协议,它为您节省 很多时间。尝试在不了解 HTTP 协议的情况下进行 Web 编程就像在不了解代数的情况下尝试求解方程。
    • 感谢您的回答我现在明白了。
    猜你喜欢
    • 2015-01-22
    • 2011-09-25
    • 2010-12-25
    • 2010-10-17
    • 2017-10-31
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多