だから私はDjangoにかなり慣れていないので、いくつかの簡単なWebサイトを作成しています. 現在、他のアプリのいくつかをホストするために使用できる Web サイトを作成しようとしています。現時点では、メイン サイトは名前/URL の辞書をテンプレートに渡すことでナビゲーション バーをレンダリングします。たとえば、これはメイン Web サイトの 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/ へのリンクを含むナビゲーション バーと、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)
しかし、ベストプラクティスが何であるかを知りたいです。では、ベストプラクティスは何ですか?