Django newbie: постоянная ошибка при попытке создать мое первое приложение django - PullRequest
1 голос
/ 10 февраля 2012

Я изучаю джанго с этой превосходной книгой "Практические проекты Джанго".Я был в состоянии прекрасно следовать инструкциям книги, но теперь я наткнулся на следующую проблему.При создании страницы 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

В результате после создания каталога и файла по умолчанию.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 ]

1 голос
/ 11 февраля 2012

Ответ на все ошибки был таким (спасибо, mongoose_za):

"На странице 15 [книги" Практические проекты Django "] вы должны убедиться, что вы редактировали сайт example.com вместо добавленияновый сайт. Вы могли заметить в вашем settings.py SITE_ID = 1. Если вы добавите новый сайт 127.0.0.1:8000, то у него будет SITE_ID, равный 2, и в следующем разделе фильтра просмотра плоских страниц по умолчанию натекущий сайт с номером 1. "

Итак, я просто изменил SITE_ID = 2 (вместо 1) в settings.py, потому что я добавил новый сайт 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

0 голосов
/ 10 февраля 2012

Ошибка TemplateDoesNotExist не в вашем шаблоне, а в 500.html.В вашем коде в шаблоне или представлении есть ошибка, и Django отвечает ошибкой 500.Однако в процессе разработки у вас должно быть DEBUG = True, и в этом случае Django будет показывать трассировку стека, а не пытаться загрузить 500.html.

Так что простое решение - сделать DEBUG = True, чтобы вы моглинастоящая ошибка и исправить это.Тем не менее, вам все равно понадобится 500.html, когда вы, наконец, запустите, так что вы можете также создать его.

0 голосов
/ 10 февраля 2012

Во-первых: шаблон не существует, ошибка в том, что у вас нет шаблона

C: /Projects/templates/flatpages/default.html (также на вашем скриншоте ваш каталог шаблонов записан как "Projetos")

Во-вторых: вам не нужно добавлять какое-либо правило 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',
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...