Fea*_*nor 41 django django-views django-staticfiles
我在/ static /文件夹中有我的index.html.我尝试时,我的django应用程序正常运行:
http://127.0.0.1:8000/index.html
Run Code Online (Sandbox Code Playgroud)
但我想通过url访问index.html:
http://127.0.0.1:8000/
Run Code Online (Sandbox Code Playgroud)
我写了一个视图,它的工作原理:
class IndexView(TemplateView):
template_name = 'index.html'
Run Code Online (Sandbox Code Playgroud)
我还添加到urls.py(这让我像静态一样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
}),
Run Code Online (Sandbox Code Playgroud)
但我认为有一种方法可以在没有TemplateView的情况下做我想做的事情.
有什么建议?谢谢.我的django版本是:Django 1.5
编辑:
我将index.html放入静态的原因是:我想制作与Phonegap兼容的django应用程序,所以在正确编码后,我所要做的就是 - > 从静态文件夹中生成.zip并将其作为移动应用程序上传到Phonegap.简单干净.
Ant*_*rov 50
您可以static/index.html像这样为开发服务:
if settings.DEBUG:
urlpatterns += url(
r'^$', 'django.contrib.staticfiles.views.serve', kwargs={
'path': 'index.html', 'document_root': settings.STATIC_ROOT}),
Run Code Online (Sandbox Code Playgroud)
但是对于生产,您应该配置您的nginx(或其他前端服务器)index.html为/位置提供文件
UPDATE
我想解释你应该这样做的情况.例如,您的django应用程序仅是admin和api视图,但客户端与单个页面应用程序(Ember,Angular,无论如何)进行交互.所以你的项目至少有两个子项目,一个用你的主django应用程序,第二个是一个带有所有html/js/css东西的客户端应用程序.将客户端脚本与django后端分开是非常方便的,它允许你的前端开发人员完成他们的工作并避免django存在(有一天它可以移动到不同的repo).
因此,在这种情况下,您将获得以下构建工作流:
brunch watch,grunt作业或gulp监视任务)这是我的urls.py例子
urlpatterns += patterns(
'django.contrib.staticfiles.views',
url(r'^(?:index.html)?$', 'serve', kwargs={'path': 'index.html'}),
url(r'^(?P<path>(?:js|css|img)/.*)$', 'serve'),
)
Run Code Online (Sandbox Code Playgroud)
Ala*_*air 40
TemplateView在这种情况下,您不需要子类.您可以TemplateView直接在您的网址中使用,只要index.html在您的模板目录中即可.
from django.views.generic.base import TemplateView
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='index.html'), name="home"),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42789 次 |
| 最近记录: |