Итак, я довольно новичок в Django и создаю несколько простых сайтов. Сейчас я пытаюсь создать веб-сайт, который можно использовать для размещения некоторых других моих приложений. На данный момент основной сайт отображает навигацию, передавая словарь имен/URL-адресов в шаблон. Например, это views.py основного веб-сайта:Передача контекстов django между приложениями
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)
Если бы я захотел, я мог бы переключиться на приложение, чтобы принять аргумент, который заменит «приложение/response.html» с «сайта/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)
, но я хочу знать, что лучше практика. Итак, что является лучшей практикой?