Как я могу исправить мое пространство имен URL-адресов трясогузки и проводник при добавлении трясогузки в текущий проект?

Моя проблема в том, что мой URL-адрес подходит mysite.com/test-news-1/ вместо mysite.com/news/test-news-1/

Я начал новый проект, используя cookiecutter-django. Затем я хотел добавить cms трясогузки в проект и следил за документацией, чтобы сделать это.

У меня нормально открывается страница администратора трясогузки, в /cms/ вместо /admin/, как написано на этой странице — http://docs.wagtail.io/en/v1.3.1/getting_started/integrating_into_django.html

Я добавил несколько приложений, чтобы попрактиковаться и привыкнуть к трясогузкам, одно из которых было скопировано из примера блога о трясогузках. Здесь начинается моя проблема.

Проводник администрирования трясогузки не отображает список моих приложений, как показано на сайте трясогузки https://wagtail.io/features/explorer/, а вместо этого просто говорит: «Добро пожаловать на ваш новый сайт о трясогузках!» Когда я выбираю «Добавить дочернюю страницу», это позволяет мне выбирать страницы приложений, которые я настроил, и, похоже, мои модели прекрасно работают. Но когда я что-то публикую и нажимаю «Перейти к живому сайту», он появляется как mysite.com/blog1/ вместо mysite.com/blog/blog1/

Я считаю, что моя проблема в том, что я не понимаю последнюю часть страницы документа, на которую я ссылался выше. Он говорит,

Обратите внимание, что есть одно небольшое отличие, когда не используется шаблон проекта Wagtail: Wagtail создает начальную домашнюю страницу базового типа Page, которая не включает никаких полей содержимого, кроме заголовка. Вы, вероятно, захотите заменить его своим собственным классом HomePage — когда вы это сделаете, убедитесь, что вы настроили запись сайта (в разделе «Настройки» / «Сайты» в админке «Трясогузка»), чтобы она указывала на новую домашнюю страницу.

Я попытался добавить модель домашней страницы со страницы документа, но это, похоже, совсем не помогло.

Я очень неопытен, это мой файл urls.py, если вам нужно увидеть другие файлы, дайте мне знать.

urls.py    

from __future__ import unicode_literals

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.views.generic import TemplateView
from django.views import defaults as default_views

from wagtail.wagtailadmin import urls as wagtailadmin_urls
from wagtail.wagtaildocs import urls as wagtaildocs_urls
from wagtail.wagtailcore import urls as wagtail_urls

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name="home"),
    url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name="about"),

    # Django Admin, use {% url 'admin:index' %}
    url(settings.ADMIN_URL, include(admin.site.urls)),

    # User management
    url(r'^users/', include("contestchampion.users.urls", namespace="users")),
    url(r'^accounts/', include('allauth.urls')),

    # Your stuff: custom urls includes go here

    # Wagtail cms
    url(r'^cms/', include(wagtailadmin_urls)),
    url(r'^documents/', include(wagtaildocs_urls)),
    url(r'', include(wagtail_urls)),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if settings.DEBUG:
    # This allows the error pages to be debugged during development, just visit
    # these url in browser to see how these error pages look like.
    urlpatterns += [
        url(r'^400/$', default_views.bad_request, kwargs={'exception': Exception("Bad Request!")}),
        url(r'^403/$', default_views.permission_denied, kwargs={'exception': Exception("Permission Denied")}),
        url(r'^404/$', default_views.page_not_found, kwargs={'exception': Exception("Page not Found")}),
        url(r'^500/$', default_views.server_error),
    ]

person Brian Head    schedule 15.02.2016    source источник


Ответы (1)


Эти две конфигурации URL конфликтуют =

url(r'^$', TemplateView.as_view(template_name='pages/home.html'), name="home"),
url(r'', include(wagtail_urls)),

Один из них необходимо изменить, иначе Django всегда будет разрешать базовый URL-адрес `yourdomain.com/' в первую запись. Один из простых способов исправить это — обновить второй

url(r'^content/', include(wagtail_urls)),

Теперь ваша корневая страница трясогузки будет доступна по адресу yourdomain.com/content.

Что касается того, что mysite.com/blog/blog1/ не появляется, этот URL предполагает, что на корневой странице вашей трясогузки есть страница с слагом «блог», а затем дочерняя страница с слагом blog1. Древовидная структура вашего сайта Wagtail по умолчанию определяет URL-адреса. Если вы хотите переопределить это, вам придется использовать RoutablePageMixin, как описано здесь. .

person Ian Price    schedule 15.02.2016
comment
Теперь я вижу. У меня сложилось впечатление, что трясогузка автоматически создала /blog/ для страниц моего дочернего блога, но это не так (что хорошо). Прочитав ваш ответ, я вернулся и внимательно посмотрел на фотографии документов, и теперь все ясно. - person Brian Head; 16.02.2016