0

我的问题是我的 URL 即将出现 mysite.com/test-news-1/ 而不是 mysite.com/news/test-news-1/

我已经使用 cookiecutter-django 开始了一个新项目。然后我想将 wagtail cms 添加到项目中并按照文档进行操作。

我得到了 wagtail 管理页面,在 /cms/ 而不是 /admin/ 就像它在这个页面上所说的那样 - http://docs.wagtail.io/en/v1.3.1/getting_started/integrating_into_django.html

我添加了一些应用程序只是为了练习和习惯 wagtail,一个直接从 wagtail 博客示例复制而来。这就是我的问题开始的地方。

wagtail 管理员资源管理器没有像 wagtail 网站https://wagtail.io/features/explorer/那样列出我的应用程序,而是说“欢迎来到您的新 Wagtail 网站!” 当我选择添加子页面时,它允许我选择我已设置的应用程序页面,并且似乎适合我的模型。但是当我发布一些内容并单击转到实时站点时,它会显示为 mysite.com/blog1/ 而不是 mysite.com/blog/blog1/

我相信我的问题是我不理解上面链接的文档页面的最后部分。它说,

请注意,不使用 Wagtail 项目模板时有一个小区别:Wagtail 创建一个基本类型 Page 的初始主页,其中不包括标题之外的任何内容字段。您可能希望将其替换为您自己的 HomePage 类 - 当您这样做时,请确保您设置了一个站点记录(在 Wagtail 管理员的 Settings / Sites 下)以指向新主页。

我尝试从文档页面添加主页模型,但这似乎根本没有帮助。

我非常没有经验,这是我的 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),
    ]
4

1 回答 1

2

这两个 url conf 冲突 =

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

必须更改,否则 Django 将始终将 `yourdomain.com/' 的基本 url 解析为第一个条目。解决此问题的一种简单方法是更新第二个-

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

现在您的 Wagtail 根页面可以在yourdomain.com/content.

至于mysite.com/blog/blog1/不出现,该 Url 会假设,从您的 Wagtail 根页面,有一个带有 slug 'blog' 的页面,然后是一个带有 slug 的子页面blog1。默认情况下,Wagtail 站点的树结构决定了 URL。如果你想覆盖它,你必须使用这里描述的 RoutablePageMixin 。

于 2016-02-15T17:20:46.230 回答