Diciamo che nel file settings.py
si hanno:
SITE_URL='www.mydomain.tld/somewhere/'
SITE_NAME='My site'
Se è necessario che in soli uno o due punti di vista:
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)
Se è necessario accedere a queste attraverso molte app e/o viste, è possibile scrivere un processore di contesto per salvare il codice:
James ha un tutorial su questo online.
Alcune informazioni utili sul quando e se dei processori di contesto sono disponibili su questo stesso sito here.
Dentro il file my_context_processors.py
si farebbe:
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
Indietro nel settings.py
, attivarlo facendo:
TEMPLATE_CONTEXT_PROCESSORS = (
...
# yours
'my_context_processors.some_context_processor',
)
Nella tua views.py
, fare una vista usarlo in questo modo:
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)
Voglio utilizzare queste impostazioni nel mio modello di base da cui ereditano tutti gli altri, e io sono un po 'laz y. C'è un modo per rendere il comportamento predefinito in modo che render_to_response userà un RequestContext invece di un semplice Contesto? Non voglio dover continuare ad aggiungere gli stessi parametri nel mio intero codice se posso aiutarlo. – Roger
Si potrebbe scrivere una funzione wrapper attorno a render_to_response che richiede la richiesta come argomento aggiuntivo, e in quella funzione: tmp_dict = RequestContext (richiesta), tmp_dict.update (response_dict) restituisce render_to_response ('... html', tmp_dict) - questo potrebbe rendere più facile la modifica del codice ovunque tramite le operazioni di ricerca e sostituzione delle copie – Geradeausanwalt
è fantastico, grazie a tutti. – Roger