在Django中显示静态页面

时间:2014-04-02 03:10:10

标签: django

我正在尝试在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内部服务器错误。我出错的任何想法?

3 个答案:

答案 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

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等)前面的实际网络服务器提供服务,特别是如果您预计会有大量流量。

答案 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")),
)