2011-01-04 2 views
3

Я следую Apress: Практические проекты Django и я столкнулся с чем-то, что меня смущает.Включить() и смутное недоумение

Когда я настроил свой url.py, чтобы указать на flatpages он отлично работает, если я делаю это:

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

Но это не работает Если я делаю это:

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

It говорит мне, что:

'модуль' объект не имеет атрибута '' URLs

Мои знания как Django и Python является довольно ограниченным, так что это может быть действительно очевидным, но было бы хорошо, чтобы понять, что происходит :)

Благодарности

ответ

2

Она нуждается в переменной urlpatterns из другой модуль. Так что попробуйте:

from django.contrib import flatpages 
... 
(r'', include(flatpages.urls.urlpatterns)), 
... 

Это рядный с примером в Джанго документации here.

Редактировать:

Я нашел проблему. Есть что-то испортить импорт из django.contrib, я все еще смотрю на это. Измените свой импорт на from django.contrib.flatpages import urls.

Так что ваш код будет:

from django.contrib.flatpages import urls 
... 
(r'', include(urls.urlpatterns)), 
... 
+1

Однако ошибка @Acorn становится то, что 'flatpages' не' urls' как атрибут, поэтому он не будет в состоянии получить, что далеко, и из-за этой ошибки мы еще не успели передать что-либо функции 'include'. –

+0

Кроме того, здесь приведена ссылка на конкретный раздел django docs, относящийся к передаче объектов для включения вместо строк, хотя на самом деле он не решает этот вопрос: http://docs.djangoproject.com/en/1.2/topics/ http/urls/# pass-callable-objects-than-strings – Acorn

+0

Я обновил свой ответ на тестовую версию. –

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