i want to set a main page or an index page for my app.
i tried adding MAIN_PAGE in settings.py and then creating a main_page view returning a main_page object, but it doesn't work
Also, i tries to add in the urls.py a declaration like
(r'^$', index),
where indexshould be the name of the index.html file on the root (but it obviously does not work)
What is the best way to set a main page in a Django website?
thanks!
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.)
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.
You could use the generic direct_to_template
view function:
# in your urls.py ...
...
url(r'^faq/$',
'django.views.generic.simple.direct_to_template',
{ 'template': 'faq.html' }, name='faq'),
...
In case someone searching for an updated version of the answer..
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r'^$', views.index, name='index')
]
and in your views.py
def index(req):
return render(req, 'myApp/index.html')