Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理django/wagtail中的url冲突_Django_Wagtail - Fatal编程技术网

如何处理django/wagtail中的url冲突

如何处理django/wagtail中的url冲突,django,wagtail,Django,Wagtail,如何处理对同一url匹配的两个不同视图?(两个视图都需要数据库调用来确定被调用的元素是否可用。更改url结构不是一个选项。) 这个摇尾url匹配所有url,如果相应的页面/段塞不在数据库中,则会引发404 但是,我也有我自己的看法,女巫的行为类似。我如何告诉django继续使用下一个url而不是使用404 (我可以将自己的视图放在摇尾视图之前并对其进行修改,但我不知道如何返回到下一个url?) 这是我最后的解决方案: from wagtail.wagtailcore.views import s

如何处理对同一url匹配的两个不同视图?(两个视图都需要数据库调用来确定被调用的元素是否可用。更改url结构不是一个选项。)

这个摇尾url匹配所有url,如果相应的页面/段塞不在数据库中,则会引发404

但是,我也有我自己的看法,女巫的行为类似。我如何告诉django继续使用下一个url而不是使用404

(我可以将自己的视图放在摇尾视图之前并对其进行修改,但我不知道如何返回到下一个url?)

这是我最后的解决方案:

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)