2010-07-08 26 views
16

quiero establecer una página principal o una página de índice para mi aplicación. He intentado añadir main_page en settings.py y luego crear una vista main_page devolver un objeto main_page, pero no funciona Además, me intenta agregar en el urls.py una declaración comoDjango cómo configurar la página principal

(r'^$', index), 

donde indexshould ser el nombre del archivo index.html en la raíz (pero obviamente no funciona)

¿Cuál es la mejor manera de establecer una página principal en un sitio web de Django?

gracias!

Respuesta

12

Si se desea hacer referencia a una página estática (no tiene que ir a través de cualquier proceso dinámico), puede utilizar la función direct_to_template vista desde django.views.generic.simple. En su URL conf:

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

(Suponiendo index.html está en la raíz de uno de sus directorios de plantillas.)

+1

Esta solución ha quedado obsoleta. Vea la respuesta elegida en http://stackoverflow.com/questions/11428427/no-module-named-simple-error-in-django –

1

Se podría utilizar el genérico función direct_to_template vista:

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

muchas gracias! – dana

10

La nueva forma preferida de hacer esto sería utilizar la clase TemplateView. Consulte esto SO answer si desea pasar de direct_to_template.

En el archivo principal 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, que optan por poner cualquiera de las páginas estáticas Linke index.html en su propio directorio static_pages/ dentro del directorio templates/.

+0

¡Esta solución funciona perfectamente bien! – Deadpool

Cuestiones relacionadas