Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django - render HTML template straight from urls.py

Tags:

python

django

I have a Django app (I'm fairly new so I'm doing my best to learn the ins and outs), where I would like to have a url endpoint simply redirect to a static html file in another folder (app).

My project file hierarchy looks like:

docs/
 - html/
    - index.html
myapp/
 - urls.py

My urls.py looks like:

from django.conf.urls import patterns, include, url
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^docs/$', RedirectView.as_view(url='/docs/html/index.html')),
)

However, when I navigate to http://localhost:8000/docs I see the browser redirect to http://localhost:8000/docs/html/index.html, but the page is not accessible.

Is there any reason that the /docs/html/index.html would not be avalable to the myApp application in a redirect like this?

An pointers would be greatly appreciated.

like image 239
Brett Avatar asked Mar 19 '23 18:03

Brett


2 Answers

NOTE: direct_to_template has been deprecated since Django 1.5. Use TemplateView.as_view instead.

I think what you want is a Template View, not a RedirectView. You could do it with something like:

urls.py

from django.conf.urls import patterns, include, url
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    (r'^docs/$', direct_to_template, {
        'template': 'index.html'
    }),
)

Just ensure the path to index.html is in the TEMPLATE_DIRS setting, or just place it in the templates folder of your app (This answer might help).

like image 168
Renan Ivo Avatar answered Apr 02 '23 17:04

Renan Ivo


I'm pretty sure Django is looking for a URL route that matches /docs/html/index.html, it does not know to serve a static file, when it can't find the route it is showing an error

like image 22
dm03514 Avatar answered Apr 02 '23 17:04

dm03514