2010-07-08 22 views
16

Voglio impostare una pagina principale o una pagina indice per la mia app. Ho provato ad aggiungere main_page in settings.py e quindi creando una vista main_page restituendo un oggetto main_page, ma non funziona Inoltre, i tentativi per aggiungere nel urls.py una dichiarazione comeDjango come impostare la pagina principale

(r'^$', index), 

dove indexshould sii il nome del file index.html nella radice (ma ovviamente non funziona)

Qual è il modo migliore per impostare una pagina principale in un sito Web Django?

grazie!

risposta

12

Se si vuole fare riferimento ad una pagina statica (non ha andare attraverso qualsiasi elaborazione dinamica), è possibile utilizzare la funzione di direct_to_template vista da django.views.generic.simple. Nella tua conf URL:

from django.views.generic.simple import direct_to_template 
urlpatterns += patterns("", 
    (r"^$", direct_to_template, {"template": "index.html"}) 
) 

(Supponendo index.html è alla radice di uno dei tuoi cartelle dei modelli.)

+1

Questa soluzione è stata dichiarata obsoleta. Vedi la risposta scelta su http://stackoverflow.com/questions/11428427/no-module-named-simple-error-in-django –

1

Si potrebbe utilizzare la generica funzione di direct_to_template vista:

# in your urls.py ... 
... 
url(r'^faq/$', 
    'django.views.generic.simple.direct_to_template', 
    { 'template': 'faq.html' }, name='faq'), 
... 
+0

grazie mille! – dana

10

Il nuovo modo preferito per farlo sarebbe quello di utilizzare la classe TemplateView. Vedere questo SO answer se si desidera passare da direct_to_template.

Nel file principale urls.py:

from django.conf.urls import url 
from django.contrib import admin 
from django.views.generic.base import TemplateView 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    # the regex ^$ matches empty 
    url(r'^$', TemplateView.as_view(template_name='static_pages/index.html'), 
     name='home'), 
] 

nota, ho scelto di mettere tutte le pagine statiche Linke index.html nella propria directory static_pages/ all'interno della directory templates/.

+0

Questa soluzione funziona perfettamente! – Deadpool

Problemi correlati