如何在 Django 中将多个上下文呈现为相同的 HTML
Posted
技术标签:
【中文标题】如何在 Django 中将多个上下文呈现为相同的 HTML【英文标题】:How do I render multiple contexts to the same HTML in Django 【发布时间】:2020-10-15 14:44:51 【问题描述】:这只是一个关于 Django 的问题。我有两个视图,我将两个上下文渲染到两个视图。如何将两个上下文渲染到同一个 html 模板?
【问题讨论】:
【参考方案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 是的,您可以直接引用它们,但对于阅读模板中代码的其他人来说,什么东西来自哪个视图并没有多大意义。虽然我不明白你到底想在这里问什么?以上是关于如何在 Django 中将多个上下文呈现为相同的 HTML的主要内容,如果未能解决你的问题,请参考以下文章