【问题标题】:How do you give a wagtail/django Page a custom url to serve at?你如何给 wagtail/django Page 一个自定义的 URL 来服务?
【发布时间】:2017-09-07 23:07:25
【问题描述】:

在wagtail/django 中,如何制作基本的wagtail Page model,创建 html 模板,然后告诉该模型用作特定 url 的视图?

from django.db import models
from wagtail.wagtailcore.models import Page

class MyPage(Page):
  title = models.CharField(blank=True, null=True, max_length=255)
  #...

我希望 url 像这样注册

url(r'^monkey/(?P<slug>[A-Za-z0-9]+)$', ...)

但我没有一个通用的urls.py 文件夹,它存储在项目之外。我尝试使用RoutablePageMixin,但我相信它适用于子页面。我也知道在结构中存储 html 模板的位置,所以这不是问题。

【问题讨论】:

  • 请您详细说明为什么您没有可访问的 urls.py?这是任何 Django 项目的标准部分,如果你不能编辑它,你会有点卡住。

标签: python django wagtail


【解决方案1】:

你可能想要这样的东西:

from django.http import Http404
from django.views import View
from wagtail.core.views import serve

class WagtailPageServeView(View):
    """
    A default way to serve up wagtail pages in urls
    """

    wagtail_slug = None

    def get(self, request, *args, **kwargs):
        if self.wagtail_slug:
            return serve(request, self.wagtail_slug)
        else:
            raise Http404(
                f"WagtailPageServeView missing 'wagtail_slug'. Cannot serve "
                f"request.path: {request.path}"
            )

然后你可以在urls.py做这样的事情:

urlpatterns += [
    re_path(r'^$', WagtailPageServeView.as_view(wagtail_slug='/'), name='home'),
]

【讨论】:

    【解决方案2】:

    在 Wagtail 中,您正在创建一个页面类型,然后在 CMS 中创建该页面类型的实例。

    即使你只打算使用这个页面一次,你仍然需要创建一个类型。按照这个逻辑,页面 url 在 CMS 中通过页面的父级和slug 定义。最有可能的是,您可以通过这些方式实现您想要的。

    如果您想覆盖您的页面模板并创建自定义 url,您可以覆盖您模型上的 get_url_parts method。

    另外,如果您想跳过 Wagtail 的页面,请记住 Wagtail 只是基于 Django 构建的。您始终可以创建一个新模块并在该模型中定义 url。如果您检查您的网站urls.py,您将看到 wagtail url 模式。您可以将其更改为如下所示:

    urlpatterns = [
        # other urls...
        url(r'wagtail/', include(wagtail_urls)),
        url(r'^monkey/', ('monkey_app.urls', 'monkey_app')),
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多