所以我对 Django 还很陌生,正在创建一些简单的网站。现在我正在尝试创建一个可以用来托管我的其他一些应用程序的网站。目前,主站点通过将名称/网址字典传递给模板来呈现导航栏。例如,这是主网站的views.py:
from django.shortcuts import render_to_response
navbar = [{'Home': '/'},
{'Apps': '/apps/'},
{'Dropdown': '',
'Google': 'http://www.google.com',
'Stackoverflow': 'http://www.stackoverflow.com'}]
context = {'navbar': navbar}
def home(request):
return render_to_response("website/home.html", context)
def apps(request):
return render_to_response("website/applist.html", context)
这导致主视图和应用程序列表视图都有一个导航栏,其中包含指向 website.com/、website.com/apps/ 的链接,以及一个标题为“Dropdown”的下拉列表,其中包含指向 google 和 stackoverflow 的链接。
我的问题是我创建了另一个应用程序,该应用程序具有自己的视图,该视图使用自己的上下文值呈现给其他模板。例如,它可以使用:
def appview(request):
## view logic...
context = {"users": users, "comments": comments}
render_to_response("app/response.html", context)
如果我愿意,我可以切换应用程序以采用将“app/response.html”替换为“website/apprender.html”的参数,即:
def appview(request, template):
## view logic...
context = {"users": users, "comments": comments}
render_to_response(template, context)
但上下文仍然只包含用户和评论,而不是我的导航栏信息。我在想我应该为应用程序添加的输入上下文添加另一个参数,即
def appview(request, template, context):
## view logic...
context["users"] = users
context["comments"] = comments
render_to_response(template, context)
但我想知道最佳做法是什么。那么最佳实践是什么?