【问题标题】:How to override the default wagtail page slug如何覆盖默认的 wagtail page slug
【发布时间】:2022-01-14 11:30:06
【问题描述】:

我正在尝试根据类别、国家和城市为占星家制作鹡鸰页面。 我的网址是:

  https//localhost:8080/<category>
  https//localhost:8080/<category>/<country>
  https//localhost:8080/<category><country>/<city>

如果我尝试使用“/”正斜杠保存 url,那么它会从 slug 中删除“/”并将其保存为字符串。

Ex: &lt;category&gt;&lt;country&gt;/&lt;city&gt; to categorycountrycity

那么是否可以将 wagtail 默认页面 slug 类型“SlugField”覆盖为“CharField”。 还是有其他解决方案?

【问题讨论】:

  • 斜线不会成为 slug 的一部分。为什么不定义&lt;category&gt;/&lt;country&gt;/&lt;city&gt;/
  • 如果你使用&lt;category&gt;&lt;country&gt;,那么category会“吃掉”除了最后一个字符之外的所有字符,然后country会得到最后一个字符,所以cat1usa会分配@987654328 @到category.
  • 您所描述的内容听起来根本不像标准的 Wagtail 行为 - 普通的 Wagtail 页面总是使用斜杠来分隔路径元素,并且没有配置此选项的选项。您在使用RoutablePageMixin 吗?如果是这样,请分享您的代码。

标签: django wagtail django-cms


【解决方案1】:

URL 与页面树紧密相关,slug 只是在该级别标识页面的部分,而不是任何父级别。所以如果你想要https://localhost:8080/&lt;category&gt;/&lt;country&gt;/&lt;city&gt;,你需要:

  • https://localhost:8080/&lt;category&gt;/ 的页面,其 slug 只是类别的名称
  • 上面的类别页面有一个孩子,只有国家的slug(这将给它的URL https://localhost:8080/&lt;category&gt;/&lt;country&gt;/
  • 国家/地区页面有一个子页面,只有城市名称的后缀(这将为其提供 URL https://localhost:8080/&lt;category&gt;/&lt;country&gt;/&lt;city&gt;)。

需要其他城市,在“国家”页面下做更多的子页面。需要更多国家,在“类别”页面下制作更多子页面。需要更多分类,在根页面下做更多子页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2015-03-20
    • 2016-05-03
    相关资源
    最近更新 更多