如何处理django/wagtail中的url冲突
如何处理对同一url匹配的两个不同视图?(两个视图都需要数据库调用来确定被调用的元素是否可用。更改url结构不是一个选项。) 这个摇尾url匹配所有url,如果相应的页面/段塞不在数据库中,则会引发404 但是,我也有我自己的看法,女巫的行为类似。我如何告诉django继续使用下一个url而不是使用404 (我可以将自己的视图放在摇尾视图之前并对其进行修改,但我不知道如何返回到下一个url?) 这是我最后的解决方案:如何处理django/wagtail中的url冲突,django,wagtail,Django,Wagtail,如何处理对同一url匹配的两个不同视图?(两个视图都需要数据库调用来确定被调用的元素是否可用。更改url结构不是一个选项。) 这个摇尾url匹配所有url,如果相应的页面/段塞不在数据库中,则会引发404 但是,我也有我自己的看法,女巫的行为类似。我如何告诉django继续使用下一个url而不是使用404 (我可以将自己的视图放在摇尾视图之前并对其进行修改,但我不知道如何返回到下一个url?) 这是我最后的解决方案: from wagtail.wagtailcore.views import s
from wagtail.wagtailcore.views import serve
# ... in my view where I normally return a 404 => I set this:
return serve(self.request, self.request.path)
首先,在不同的视图中共享相同的url模式是个坏主意。 你的项目越大,维护它就越困难 尽管如此,如果你想这样做,还是有办法的 您可以像您所说的那样,首先在url.py中放置自己的视图 首先处理您自己的一些逻辑,并在视图中没有显示任何内容时捕获404异常,只需使用return语句调用带有请求原始参数(页面、slug等)的“Wagtail”视图 下面是一个例子。 本例基于Django基于函数的视图,但在基于类的视图中也有类似的方法
def your_own_view(request, slugs):
try:
article = get_object_or_404(Article, slugs=slugs)
except Http404:
return some_wagtail_view(request, slugs)
...
return render(request, "article/view.html", context)
你知道我该怎么做吗?首先检查是否有一个Wagtail页面可用,如果没有,是否处理我的django URL?
def your_own_view(request, slugs):
try:
article = get_object_or_404(Article, slugs=slugs)
except Http404:
return some_wagtail_view(request, slugs)
...
return render(request, "article/view.html", context)