【问题标题】:Django - middleware inserting code in templateDjango - 在模板中插入代码的中间件
【发布时间】:2020-08-26 13:18:08
【问题描述】:

我需要像 contib.messages 一样的中间件,但要从视图而不是消息将特定的 JS 代码插入页面。是否有现成的解决方案或任何想法如何做到这一点?

【问题讨论】:

    标签: python django django-views django-templates django-middleware


    【解决方案1】:

    特定于查看并与处理/数据相关的文件

    这是假设您需要您的 JS 文件特定于您的视图,并且需要根据您的视图数据而变化。

    您不需要中间件。使用上下文将脚本的 url/名称从视图传递到模板,并使用模板中的变量。

    # views.py
    
    class SomeView(TemplateView):
        template_name = "app/template.html"
    
        def get_context_data(self, *args, **kwargs):
            context = super().get_context_data(*args, **kwargs)
            context["js_url"] = "https://some.url/file.js"
            context["js_static"] = "app/local_file.js"
            return context
    
    {# templates/app/template.html #}
    [...]
    {% load static %}
    <p>Your content</p>
    <script src="{{ js_url }}"></script>
    <script src="{% static js_static %}"></script>
    

    特定于模板的文件

    如果你只需要 JS 特定于模板而不需要根据视图内部的任何处理而变化,只需使用模板中的 urls/静态位置即可。

    整个网站的文件

    如果您需要在每个页面上使用相同的脚本,则应改为创建一个基本模板,在其中添加您的脚本并让您的所有模板都继承该基本模板。

    【讨论】:

      猜你喜欢
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2018-02-14
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多