I have my index.html in /static/ folder. My django app is running ok when i try:
http://127.0.0.1:8000/index.html
But i want to acces index.html by url:
http://127.0.0.1:8000/
I wrote a view and it works:
class IndexView(TemplateView):
template_name = 'index.html'
I also added to urls.py(this lets me serve static like http://127.0.0.1:8000/css/style.css
):
url(r'^(?P<path>.*)$', 'django.contrib.staticfiles.views.serve', {
'document_root': settings.STATIC_ROOT, 'show_indexes':True
}),
But i think there is a way to do what i want without TemplateView.
Any suggestions? Thanks. My django version is: Django 1.5
EDIT:
The reason i placed index.html into static: i want to make Phonegap compatible django app, so after proper coding, all i have to do is --> make .zip from static folder and upload it to Phonegap as mobile app. Easy and clean.
You can serve static/index.html
for development like this:
if settings.DEBUG:
urlpatterns += url(
r'^$', 'django.contrib.staticfiles.views.serve', kwargs={
'path': 'index.html', 'document_root': settings.STATIC_ROOT}),
But for production you should configure your nginx
(or other frontend server) to serve index.html
file for /
location
UPDATE
I want to explain the case you should do like this. For example your django app is only admin and api view, but client interacts with a single page app (Ember, Angular, whatever). So you project has at least two subprojects, one with your main django app and the second is a client app with all html/js/css stuff. It is very convenient to have client scripts separate from django backend, it allows your frontend developers to do their job and avoid django existence (someday it can be moved to the distinct repo).
So in this case you get the following build workflow:
brunch watch
, grunt
job or gulp
watch task)Here is my urls.py
example
urlpatterns += patterns(
'django.contrib.staticfiles.views',
url(r'^(?:index.html)?$', 'serve', kwargs={'path': 'index.html'}),
url(r'^(?P<path>(?:js|css|img)/.*)$', 'serve'),
)