2014-02-13 4 views
2

Я читаю и следую книге «Практические проекты Django: второе издание», и большая часть книги уже устарела до такой степени, что целая глава не будет работать вообще. Сейчас я пытаюсь создать свою первую плоскую страницу, и я получаю ошибку 404.Django flatpages Не работает

Я пытаюсь использовать встроенный в приложение «django.contrib.flatpages» и я уже создал свой первый flatpage через панель администратора:

enter image description here

Вот мой файл 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 
) 

Вот что я сделал, чтобы мой файл 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 
) 

Так что это все, что я сделал до сих пор, и я ожидаю «TemplateDoesNotExist в/первой странице /» при навигации нравится книга говорит: http://example.com:1006/first-page/

Но вместо этого, я просто получив ошибку 404.

Я делаю это правильно или сделал новую версию Django, чтобы обесценить способ создания flatpages?

+2

Я не уверен, используя книгу, которая была первоначально написана для Django 0.x, а затем обновлена ​​в 2009 году для версии 1.1 - это хорошая идея для изучения Django 1.6 ... – abarnert

+0

На самом деле эти шаги кажутся правильными даже с Django 1.6 : https://docs.djangoproject.com/en/1.6/ref/contrib/flatpages/. Попробуйте шаблоны 'urls', указанные в документации (главным образом, метод« catchall »). –

+0

Я пробовал использовать эту функцию, все еще получая« No FlatPage соответствует заданному запросу ». есть ли способ перечислить доступные URL-адреса для перехода к? Например, если у меня не было домашней страницы, там я отправил сообщение об ошибке с доступными URL-адресами, могу ли я получить распечатанный список flatpages, которые доступны? – user1504605

ответ

4

Я, наконец, понял это, и каждый ресурс в Интернете не упоминает об этом вообще. Они даже не покрывают этот материал во всей главе из книги Apress. Надеюсь, что все остальные отсюда не должны тратить 3 часа на это решение.

enter image description here

Так решение, убедитесь, что SITE_ID в файле settings.py соответствует номеру в URL сайта при нажатии «сайт изменения» в панели администратора. Как вы можете видеть на картинке выше, для меня число «4» - это идентификатор сайта. Так что мой settings.py должен выглядеть следующим образом:

SITE_ID = 4 

Есть много потоков, как эта, где люди просто говорят «изменить его на 1», которая вводит в заблуждение. Убедитесь, что номер соответствует вашему идентификатору сайта!

-1

Страница 18, внизу: «Представляем систему шаблонов Django». Следуйте инструкциям, чтобы создать каталог шаблонов, добавить его в TEMPLATE_DIRS и создать файл шаблона в этом каталоге. (страницы 18-21)

+0

Уже сделал это, нет никакой разницы, так как он не пытается искать html в TEMPLATE_DIRS. Он останавливается на отметке 404, я полагаю, чтобы установить TEMPLATE_DIRS после получения ошибки «TemplateDoesNoteExist at/first-page /». На этом этапе еще нет. – user1504605

Смежные вопросы