Django新手:尝试创建我的第一个django应用程序时出现持久性错误

时间:2012-02-10 12:08:51

标签: python django

我正在用这本优秀的书“实用Django项目”学习django。我完全按照本书的步骤,但现在我偶然发现了以下问题。 在下面创建页面http://127.0.0.1:8000/first-page/时:

enter image description here

我找到了以下错误页面:

enter image description here

这一点略有不同,在书上宣布(第16页):

enter image description here

然后,我打开了文件urls.py并添加了以下代码行:

(r'', include ('django.contrib.flatpages.urls')),

代码如下:

enter image description here

我保存了urls.py并再次访问http://127.0.0.1:8000/first-page/,找到上面相同的错误消息(没有改变),根据这本书,我现在应该找到这个其他错误页面:

enter image description here

因此,在我为模板创建目录和文件default.html之后,如下所示:

enter image description here

并更改了TEMPLATE_DIRS settings.py文件,如下所示:

enter image description here

同样,http://127.0.0.1:8000/first-page/显示相同的错误消息,此时应显示:

enter image description here

我重复了几次这些步骤。

我正在使用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',
)

3 个答案:

答案 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,所以你也可以继续创建它。