die in Ihrer settings.py
Datei Lassen Sie sagen, Sie haben:
SITE_URL='www.mydomain.tld/somewhere/'
SITE_NAME='My site'
Wenn Sie, dass in nur ein oder zwei Ansichten:
from django.shortcuts import render_to_response
from django.conf import settings
def my_view(request, ...):
response_dict = {
'site_name': settings.SITE_NAME,
'site_url': settings.SITE_URL,
}
...
return render_to_response('my_template_dir/my_template.html', response_dict)
Wenn Sie müssen Um diese auf viele Apps und/oder Ansichten zuzugreifen, können Sie einen Kontextprozessor schreiben, um Code zu speichern:
James hat ein Tutorial zu diesem online.
Einige nützliche Informationen zu den Kontextprozessoren wann und ob ist auf dieser Website here verfügbar.
In Ihrem my_context_processors.py
Datei, die Sie würde:
from django.conf import settings
def some_context_processor(request):
my_dict = {
'site_url': settings.SITE_URL,
'site_name': settings.SITE_NAME,
}
return my_dict
Zurück in Ihrem settings.py
, aktivieren Sie es, indem Sie:
TEMPLATE_CONTEXT_PROCESSORS = (
...
# yours
'my_context_processors.some_context_processor',
)
In Ihrem views.py
, eine Ansicht, es wie so verwenden machen:
from django.shortcuts import render_to_response
from django.template import RequestContext
def my_view(request, ...):
response_dict = RequestContext(request)
...
# you can still still add variables that specific only to this view
response_dict['some_var_only_in_this_view'] = 42
...
return render_to_response('my_template_dir/my_template.html', response_dict)
Ich möchte diese Einstellungen in meiner Basisvorlage verwenden, von der alle anderen erben, und ich bin ein wenig laz y. Gibt es eine Möglichkeit, das Standardverhalten so zu machen, dass render_to_response einen RequestContext anstatt nur einen Kontext verwendet? Ich möchte nicht die gleichen Parameter in meinem gesamten Code hinzufügen müssen, wenn ich Ihnen helfen kann. – Roger
Sie könnten eine Wrapper-Funktion um render_to_response schreiben, die die Anfrage als zusätzliches Argument akzeptiert, und in dieser Funktion: tmp_dict = RequestContext (Anfrage), tmp_dict.update (Antwort_dict) return render_to_response ('... html', tmp_dict) - dies könnte Erleichtern Sie es, Ihren Code überall zu ändern, indem Sie die Such- und Ersetzen-Funktion verwenden. – Geradeausanwalt
das ist großartig, danke an alle. – Roger