我正在用这本优秀的书“实用Django项目”学习django。我完全按照本书的步骤,但现在我偶然发现了以下问题。 在下面创建页面http://127.0.0.1:8000/first-page/时:
我找到了以下错误页面:
这一点略有不同,在书上宣布(第16页):
然后,我打开了文件urls.py并添加了以下代码行:
(r'', include ('django.contrib.flatpages.urls')),
代码如下:
我保存了urls.py并再次访问http://127.0.0.1:8000/first-page/,找到上面相同的错误消息(没有改变),根据这本书,我现在应该找到这个其他错误页面:
因此,在我为模板创建目录和文件default.html之后,如下所示:
并更改了TEMPLATE_DIRS settings.py文件,如下所示:
同样,http://127.0.0.1:8000/first-page/显示相同的错误消息,此时应显示:
我重复了几次这些步骤。
我正在使用Python 2.6和django 1.1(相同版本的本书)。
有没有人知道我做错了什么?
提前感谢您的帮助。
这一切看起来都那么简单明了。但是,不起作用!
这是我的设置文件代码:
# Django settings for cms project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@domain.com'),
)
MANAGERS = ADMINS
DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'C:\Projetos\cms\cms.db' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True
MEDIA_ROOT = ''
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'
# Make this unique, and don't share it with anybody.
SECRET_KEY = ''
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source',
# 'django.template.loaders.eggs.load_template_source',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
ROOT_URLCONF = 'cms.urls'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'C:/Projetos/templates/',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'django.contrib.flatpages',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
)
答案 0 :(得分:1)
所有错误的答案都是这样的(谢谢,mongoose_za):
“在[实用Django项目”一书的第15页],您必须确保编辑example.com网站而不是添加新网站。您可能已在settings.py中注意到SITE_ID = 1。您添加一个新站点127.0.0.1:8000,其SITE_ID为2,在下一节中,平面视图默认过滤当前站点为1。“
所以,我只是在settings.py中更改SITE_ID = 2
(而不是1),因为我添加了一个新站点127.0.0.1:8000。
之后,我根据书中的说明将路径更改为我的模板文件夹:
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'C:/Projetos/templates/',
)
我找到了预期的结果(空白页面“我的第一页”)
我也遵循了这个建议:
“在p13上是与旧版django的第一次偏离。在你的settings.py中添加'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',(不要忘记逗号)到你的MIDDLEWARE_CLASSES。”
所有这些都可以在这个伟大的博客上找到:
http://blog.haydon.id.au/2008/08/2-your-first-django-site-simple-cms.html
答案 1 :(得分:0)
首先:模板不存在错误是因为你没有模板
C:/Projects/templates/flatpages/default.html(在您的屏幕截图中,您的模板目录拼写为“Projetos”)
其次:您不需要为flatpages添加任何url规则。 Flatpages通过中间件工作:
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
所以在您的设置文件中:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'django.middleware.common.CommonMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',
)
答案 2 :(得分:0)
TemplateDoesNotExist
错误不在您的模板上,而是在500.html上。模板或视图中的代码出错,Django响应500错误。但是,在开发过程中,您应该有DEBUG = True
,在这种情况下,Django将显示堆栈跟踪,而不是尝试加载500.html。
所以简单的解决方案就是制作DEBUG = True
,这样你才能看到真正的错误并纠正错误。但是,当你最终启动时,你仍然需要500.html,所以你也可以继续创建它。