Il titolo della domanda presume che "vista" e "modello" siano intercambiabili - non lo sono. Per ottenere il sito corrente in un modello, è necessario aggiungerlo al contesto utilizzato per il rendering del modello. Se stai usando un RequestContext
, puoi scrivere un processore di contesto per farlo automaticamente.
È possibile scrivere un processore contesto per farlo in questo modo:
from django.contrib.sites.models import Site
def site_processor(request):
return { 'site': Site.objects.get_current() }
Poi, aggiungerlo al TEMPLATE_CONTEXT_PROCESSORS
, e usarlo in questo modo:
<h3>{{ site.name }}</h3>
fonte
2011-09-19 05:13:45
sto usando 'django.views.generic.simple.direct_to_template', quindi dovrei essere coperto, giusto? Non c'è un processore di contesto integrato per questo? –
Sì, 'direct_to_template' usa' RequestContext', tuttavia è necessario scrivere il proprio processore di contesto poiché non ce n'è uno in Django. In alternativa puoi passare un argomento a 'direct_to_template' che aggiunge il sito corrente al contesto. –
Perché la funzione si chiama 'site_processor' invece di' site'? –