Django how to set main page

The new preferred way of doing this would be to use the TemplateView class. See this SO answer if you would like to move from direct_to_template.

In your main urls.py file:

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

Note, I choose to put any static pages linke index.html in its own directory static_pages/ within the templates/ directory.


If you want to refer to a static page (not have it go through any dynamic processing), you can use the direct_to_template view function from django.views.generic.simple. In your URL conf:

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

(Assuming index.html is at the root of one of your template directories.)