在 Django 中显示静态页面
Posted
技术标签:
【中文标题】在 Django 中显示静态页面【英文标题】:Display static page in Django 【发布时间】:2014-05-13 02:35:08 【问题描述】:我正在尝试在 Django 项目中显示静态页面的内容。
urls.py :-
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'spollow.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
(r'^$', 'django.views.generic.simple.direct_to_template', 'template': 'index.html'),
url(r'^admin/', include(admin.site.urls)),
)
index.html 与 urls.py 位于同一目录中
我收到 500 个内部服务器错误。有什么想法我哪里出错了吗?
【问题讨论】:
正在调试吗?你能发布回溯吗? Django static page?的可能重复 【参考方案1】:首先,来自 500 错误的堆栈跟踪表明该错误可能是什么?您可能正在使用 Django 1.6,并且不推荐使用对 direct_to_template 的调用。
在 Django 1.5 或更新版本上,您可以使用 TemplateView
Here's the example from the documentation
https://docs.djangoproject.com/en/dev/topics/class-based-views/
from django.conf.urls import patterns
from django.views.generic import TemplateView
urlpatterns = patterns('',
(r'^about/', TemplateView.as_view(template_name="about.html")),
)
您可以在 Django 1.4 或更早版本
上使用 direct_to_template 视图Here's the relevant documentation
https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-simple-direct-to-template
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
(r'^foo/$', direct_to_template, 'template': 'foo_index.html'),
(r'^foo/(?P<id>\d+)/$', direct_to_template, 'template': 'foo_detail.html'),
)
如果是后者,我会使用模块而不是字符串,(查看示例中的导入)。
除此之外,如果没有 500 个细节,它将在黑暗中拍摄,您可能没有正确的模板,或者不正确的路径,或者一百万种不同的东西。
注意事项
如果您只想提供静态页面,最好通过 django 前面的实际网络服务器(nginx、apache 等)来提供它们,特别是在您期望大量流量的情况下。
【讨论】:
【参考方案2】:如果您的错误是由于找不到index.html
如果你的是app
(即:由python manage.py startapp <app>
创建)那么:
然后django
会在<app>/templates
目录下搜索模板文件,如果你在settings.py
中添加了应用到INSTALLED_APPS
。
所以你需要在<app>
中创建一个文件夹templates
并将index.html
放入其中。
如果您没有任何apps
,您想手动添加template path
:
打开settings.py
,然后编辑TEMPLATE_DIRS
TEMPLATE_DIRS = (
# Put the full path of the template dir here, like "/home/html/django_templates" or
# "C:/www/django/templates".
)
【讨论】:
【参考方案3】:在 Django 1.5 或更高版本中,您可以使用 render
函数而不是 direct_to_template
:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^$', 'django.shortcuts.render', 'template_name': 'index.html'),
)
或者如果你喜欢更复杂的方式:),你可以使用基于类的TemplateView
:
from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView
urlpatterns = patterns('',
url(r'^$', TemplateView.as_view(template_name="index.html")),
)
【讨论】:
以上是关于在 Django 中显示静态页面的主要内容,如果未能解决你的问题,请参考以下文章