Django flatpages不起作用

use*_*605 4 python django

我正在阅读并阅读"实用Django项目:第二版"这本书,很多书已经过时了,整个章节根本不起作用.现在我正在尝试创建我的第一个平面页面,我收到404错误.

我正在尝试使用内置的'django.contrib.flatpages'应用程序,我已经通过管理面板创建了我的第一个平面页面:

在此输入图像描述

这是我的urls.py文件:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',


    url(r'^admin/', include(admin.site.urls)),
    (r'', include('django.contrib.flatpages.urls')) #ADDED THIS LINE FOR FLATPAGES
)
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止对settings.py文件所做的事情:

SITE_ID = 1 # REQUIRED FOR 'django.contrib.flatpages'


INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.flatpages', # ADDED FOR FLATPAGES
    'south',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', #FOR FLATPAGES
)
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所做的所有事情,我希望在导航到这本书的时候可以在"/ first-page /"上找到"TemplateDoesNotExist":http://example.com:1006/first-page /

但不是那样,我只是得到404错误.

我是正确地做了这个还是新的Django版本贬低了制作flatpages的方式?

use*_*605 9

我终于明白了,网上的每一个资源都没有提到这一点.他们甚至从来没有在Apress书的整章中介绍过这些内容.希望从这里出来的其他人不必花费3个小时来解决这个问题.

在此输入图像描述

因此,解决方案是,在管理面板中单击"更改站点"时,确保文件SITE_ID中的settings.py文件与站点URL中的编号匹配.正如您在上图中看到的那样,对我来说,数字是"4",这是站点ID.所以我settings.py应该看起来像这样:

SITE_ID = 4
Run Code Online (Sandbox Code Playgroud)

有许多这样的线程,人们只是说"将其改为1",这是误导性的.确保该号码符合您的站点ID!