我正在尝试在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内部服务器错误。我出错的任何想法?
答案 0 :(得分:3)
首先,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上使用direct_to_template视图 1.4或更早
Here's the relevant documentation
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等)前面的实际网络服务器提供服务,特别是如果您预计会有大量流量。
答案 1 :(得分:1)
如果您的错误导致无法找到index.html
app
(即:由python manage.py startapp <app>
创建),那么:如果您将应用添加到django
中的<app>/templates
,则INSTALLED_APPS
会在settings.py
目录中搜索模板文件。
因此您需要在templates
内创建一个<app>
文件夹,并将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".
)
答案 2 :(得分:0)
在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")),
)