2015-04-25 151 views
0

我想在开发时提供静态html文件。我希望每file.html/file服务。在Django中提供没有扩展名的静态HTML文件

很明显,在生产静态文件应通过Nginx或其他服务。

但是如何在开发时以一种优雅的方式来实现呢?我也很惊讶index.html/

我现在拥有的一切:

urls.py

if settings.DEBUG: 
    def index(request): 
     return render(request, 'index.html') 
    urlpatterns += patterns('', url(r'^$', index)) 
    urlpatterns += static('/', document_root=settings.BASE_DIR+'/static/') 

而且还settings.py

STATIC_URL = '/static/' 

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'static/'), 
) 
+0

TEMPLATE_DIRS =(os.path.join(BASE_DIR,“模板”),) – HassenPy

+0

还你的静态文件的设置应该有我猜 – HassenPy

+1

@HassenPy对不起,添加的相关片段'settings.py' –

回答

1

我会写一个处理加入.html一个视图,并配置URL配置使用它。

视图

from django.conf import settings 
from django.contrib.staticfiles.views import serve 


def serve_html(request, file_name): 
    if not file_name: 
     file_name = 'index' 

    file_path = '{}.html'.format(file_name) 

    # Use Django staticfiles's serve view. 
    return serve(request, file_path) 

URL配置

url(r'^(?P<file_name>.*)$', serve_html) 

把URL配置上次在你urls.py否则是很重要的,它会赶上所有请求和你的其他的URLconf将不会被达到。

+0

太好了。我还有'/ static'目录不在应用程序级别,但是在项目级别,所以为了'serve()'工作,我必须正确设置'settings.py'中的'STATICFILES_DIRS'。 –

+1

@ o2genum事实上,答案假设您的静态文件已正确设置;) – aumo