【问题标题】:How do I render multiple contexts to the same HTML in Django如何在 Django 中将多个上下文呈现为相同的 HTML
【发布时间】:2020-10-15 14:44:51
【问题描述】:

这只是一个关于 Django 的问题。我有两个视图,我将两个上下文渲染到两个视图。如何将两个上下文渲染到同一个 HTML 模板?

【问题讨论】:

    标签: html django django-rest-framework django-templates


    【解决方案1】:

    如果我正确理解您的问题,您可以在渲染时在两个视图函数中调用相同的模板文件:

    def your_view_1(request):
        context_1: dict = {'key': 'a_string_depending_on_request_or_view'}
        return render(request, 'common_template.html', context_1)
    
    def your_view_2(request):
        context_2: dict = {'key': 'another_string'}
        return render(request, 'common_template.html', context_2)
    

    【讨论】:

    • 以及如何将它们添加到 urls.py 中?
    • 以及如何将它们添加到 urls.py 中?实际上我遇到了一个问题,即我只能访问 jinja 模板中的一个变量。其中一个没有显示任何值 @bolino
    • 只需在你的 urls.py 中放两个“path”或“re_path”,调用你的每一个视图。关于模板,它不需要使用上下文中的所有变量,所以如果你愿意,你可以只使用其中的一部分。
    • 你能指定一个上述评论的例子吗? @bolino
    • 例如urlpatterns = [path('path-1/', views.your_view_1, name='view-name-1'), path('path-2/', views.your_view_2, name='view-name-2'),]
    【解决方案2】:
    def view_1(request):
        context_1: dict = {
         //Your key/value pairs
         check = False
        }
        return render(request, 'common_template.html', context_1)
    
    def view_2(request):
        context_2: dict = {
        //Your other key value pairs
        check = True
        }
        return render(request, 'common_template.html', context_2)
    

    然后在你的模板中,你可以做一个 if-else

    {% if check %}
    //do stuff related to view2
    {% else %}
    //do stuff related to view1 %}
    {%endif%}
    

    【讨论】:

    • 但是我已经有一本来自另一个类的字典,它没有像 check 这样的任何标志
    • 但是我已经有一本来自另一个类的字典,它没有像 check 这样的任何标志
    • 在这种情况下,如果键相同且值不同,则可以使用 bolino 的答案。但是,如果键也不同,请检查它们是否为空,如果不是,则执行操作。
    • 不,我的键不一样。为什么我必须使用条件。我不能直接引用 HTML 文件中的变量吗? @Abhishek
    • @Sri Test 是的,您可以直接引用它们,但对于阅读模板中代码的其他人来说,什么东西来自哪个视图并没有多大意义。虽然我不明白你到底想在这里问什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2013-12-03
    • 2015-07-20
    相关资源
    最近更新 更多