在为当前项目添加wagtail时,如何修复Wagtail URL命名空间和资源管理器?

时间:2016-02-15 13:28:08

标签: django python-3.x wagtail cookiecutter

我的问题是我的网址即将发布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 admin Explorer没有列出我在wagtail网站https://wagtail.io/features/explorer/上显示的应用程序,而只是说“欢迎来到你的新Wagtail网站!”当我选择添加子页面时,它允许我选择我已设置的应用程序页面,似乎我的模型就好了。但是当我发布内容并点击进入实时网站时,它会以mysite.com/blog1/而不是mysite.com/blog/blog1 /

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

  

请注意,不使用Wagtail时会有一个小的区别   项目模板:Wagtail创建了基本的初始主页   类型页面,不包括标题之外的任何内容字段。   您可能希望将其替换为您自己的HomePage类 -   执行此操作时,请确保设置站点记录(在“设置/”下)   Wagtail admin中的网站指向新的主页。

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

我很缺乏经验,这是我的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),
    ]

1 个答案:

答案 0 :(得分:2)

这两个url confs处于冲突=

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

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

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

现在可以在yourdomain.com/content访问您的Wagtail根页。

至于mysite.com/blog/blog1/没有出现,Url会认为,在你的Wagtail根页面上,有一个页面w / slug' blog',然后是一个子页面与slug blog1。 Wagtail站点的树结构默认确定URL。如果要覆盖它,则必须按照here所述使用RoutablePageMixin。