2010-07-08 11 views
16

Chcę ustawić stronę główną lub stronę indeksu dla mojej aplikacji. Próbowałem, dodając MAIN_PAGE w settings.py i następnie tworzenia widoku main_page powracającego obiekt main_page, ale to nie działa Również i próbuje dodać w urls.py deklarację jakDjango jak ustawić stronę główną

(r'^$', index), 

gdzie indexshould być nazwa pliku index.html na root (ale oczywiście nie działa)

Jaki jest najlepszy sposób ustawienia strony głównej w witrynie Django?

dziękuję!

Odpowiedz

12

Jeśli chcesz odnieść się do strony statycznej (nie ma ona przejść przez dowolnego dynamicznego przetwarzania), można użyć funkcji direct_to_template widok z django.views.generic.simple. W adresie URL conf:

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

(Zakładając index.html leży u podstaw jednego ze swoich katalogów szablonów.)

+1

To rozwiązanie jest przestarzałe. Zobacz wybraną odpowiedź na http://stackoverflow.com/questions/11428427/no-module-named-simple-error-in-django –

1

Można użyć rodzajowe funkcji direct_to_template wyświetlania:

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

dziękuję bardzo! – dana

10

Nowa preferowany sposób to zrobić byłoby użyć klasy TemplateView. Jeśli chcesz przenieść się z wersji direct_to_template, zobacz tę SO answer.

W głównej urls.py pliku:

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'), 
] 

Uwaga, postanawiam umieszczać żadnych statycznych stron Linke index.html we własnym katalogu static_pages/ w katalogu templates/.

+0

To rozwiązanie działa doskonale! – Deadpool

Powiązane problemy