Django 如何反转在 Wagtail 中创建的页面?
How to Django reverse to pages created in Wagtail?
我有一个对象的鹡鸰模型。
class ObjectPage(Page):
# fields, not really important
我想让前端用户可以编辑该对象,所以我还创建了一个通用更新视图来实现这一点。我的问题是如何使用 Django 的 reverse() 函数指向我的 get_success_url() 方法中编辑的对象:
class EditObjectPage(LoginRequiredMixin, UpdateView):
# model, template_name, and fields defined; not really important
def get_success_url(self):
return("ObjectPage", kwargs={"slug" : self.object.slug}) # doesn't work
return("object_page_slug", kwargs={"slug" : self.object.slug}) # also doesn't work
当我在 urls.py 文件中明确定义 URL 名称时,我知道如何执行此操作,但在这种情况下,URL 被创建为 Wagtail 页面并由我的 urls.py:
的这一行处理
url(r"", include(wagtail_urls)),
我一直在搜索文档以了解是否为 Wagtail 页面分配了可以反转的名称,但我在官方文档或此处的 Whosebug 上找不到任何内容。
页面对象提供了一个get_url
method - get_success_url
应该可以直接接受这个,所以不需要使用reverse
。
def get_success_url(self):
return self.object.get_url()
内部 get_url
使用的 URL 路线是 wagtail_serve
,所以如果你绝对需要通过 reverse
,你可以 replicate the logic there。
我有一个对象的鹡鸰模型。
class ObjectPage(Page):
# fields, not really important
我想让前端用户可以编辑该对象,所以我还创建了一个通用更新视图来实现这一点。我的问题是如何使用 Django 的 reverse() 函数指向我的 get_success_url() 方法中编辑的对象:
class EditObjectPage(LoginRequiredMixin, UpdateView):
# model, template_name, and fields defined; not really important
def get_success_url(self):
return("ObjectPage", kwargs={"slug" : self.object.slug}) # doesn't work
return("object_page_slug", kwargs={"slug" : self.object.slug}) # also doesn't work
当我在 urls.py 文件中明确定义 URL 名称时,我知道如何执行此操作,但在这种情况下,URL 被创建为 Wagtail 页面并由我的 urls.py:
的这一行处理url(r"", include(wagtail_urls)),
我一直在搜索文档以了解是否为 Wagtail 页面分配了可以反转的名称,但我在官方文档或此处的 Whosebug 上找不到任何内容。
页面对象提供了一个get_url
method - get_success_url
应该可以直接接受这个,所以不需要使用reverse
。
def get_success_url(self):
return self.object.get_url()
内部 get_url
使用的 URL 路线是 wagtail_serve
,所以如果你绝对需要通过 reverse
,你可以 replicate the logic there。