URL-адреса не работают при интеграции пользовательского приложения с django-cms

Я пытаюсь интегрировать приложение django с django-cms. Я использую базовое приложение «Опрос», как указано в базовом руководстве по Django, и следую рекомендациям по здесь.

Теперь я могу интегрировать приложение и просматривать страницу «опрос». Но когда я нажимаю «отправить», django-cms выдает ошибку

"Система управления контентом: страница не найдена для "опросов/1/голосования"

Обновление: если я добавлю следующую строку в основной urls.py, все будет работать нормально.

(r'^polls/', include('polls.urls')),

Но это обычно не рекомендуется в django и django-cms. Есть ли выход?


person Neo    schedule 09.03.2011    source источник
comment
почему не рекомендуется добавлять маршруты в django и/или django-cms?   -  person Poelinca Dorin    schedule 09.03.2011
comment
@poelinca - Потому что это означает, что приложение нелегко переносить, поскольку оно требует изменения urls.py вручную. В идеале приложение должно автоматически фиксироваться.   -  person Neo    schedule 09.03.2011
comment
если вы используете приложение django.contrib.admin, вам все равно нужно отредактировать как settings.py, так и urls.py, верно? так почему же polls.py должен вести себя иначе? также посмотрите на urls.py как на файл конфигурации (например, на settings.py). ps: это исходит из точки зрения php, я играл с django всего несколько часов.   -  person Poelinca Dorin    schedule 09.03.2011
comment
Смысл переносимости по отношению к django-cms заключается в том, что если приложение работает, скажем, /polls/, вы должны иметь возможность изменить его, скажем, на /new-polls/, без ручного редактирования файла URL. Используя django-cms, вы можете сделать это, создав apphooks и прикрепив эти apphooks к страницам.   -  person zsquare    schedule 09.03.2011
comment
admin приложение является особым случаем и требуется только один раз для каждой установки django. Возможно, вам придется добавить сотни приложений, и это приведет к очень загроможденному urls.py. Так что в идеале вы должны добавить свое приложение только в настройки INSTALLED_APPS, и это должно работать.   -  person Neo    schedule 09.03.2011


Ответы (3)


Что вам нужно сделать, так это создать apphook для вашего приложения для опросов и включить туда URL-адреса. Взгляните на: http://docs.django-cms.org/en/2.1.3/extending_cms/extending_examples.html#my-first-app-apphook

ИЗМЕНИТЬ

Не забудьте перезапустить сервер после того, как подключите apphook.

person zsquare    schedule 09.03.2011
comment
это именно то, что я слежу в данный момент. Но после этого я попаду только на страницу голосования, так что по крайней мере некоторые URL-адреса работают, как указано в статье. Но когда я нажимаю «отправить» на странице голосования, действие формы указывает на /polls/id/vote. И этот конкретный URL-адрес недоступен, если я не добавлю URL-адрес вручную в urls.py. :( - person Neo; 09.03.2011
comment
Если вы имеете в виду, что добавляете запись для /polls/id/vote в polls.urls (т.е. файл URL для приложения опросов), то это нормально, т.е. это должно быть ошибка в документации. - person zsquare; 09.03.2011
comment
Существует список рассылки пользователей django-cms: groups.google.com/group/django-cms< /а> - person zsquare; 09.03.2011
comment
Я ответил на свой вопрос. - person Neo; 09.03.2011

Я понял это. Ну, жестко закодированные URL-адреса внутри шаблонов приложений не работают. Внутри шаблонов следует использовать теги {% url %}.

person Neo    schedule 09.03.2011

Использование apphooks было бы решением, однако оно работает, если вы наконец поместите маршрут URL-адреса cms в конце шаблонов URL-адресов. Попробуй это

person Mario César    schedule 09.03.2011