如何从Django中另一个URL的视图功能知道URL路径?

时间:2018-12-27 17:45:57

标签: django url

我有一组URL:

/home/
/register/
/login/
/puzzle/<pk>

所有前三个url都可以请求最后一个url。

是否可以通过附加的视图函数知道哪些网址正在调用/puzzle/<pk>

修改

所以问题是这是一个益智游戏,每个用户都有一个关卡。如果他仅完成某个级别,那么他可以进入下一个级别。因此,如果用户已完成 3级,我将始终向他显示带有url /puzzle/4的html页面。

流为:

用户注册。他的级别是0。注册后,他将被重定向到puzzle/1/

用户登录。如果他已完成 x 级,则他登录后将被重定向到/puzzle/x+1

我已经处理了这两种类型。

但是问题是,假设用户在页面/puzzle/1/中。现在,如果他从附加到/puzzle/2/的视图函数中手动将URL更改为/puzzle/<pk>/,我该如何处理上述情况?

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找request.resolver_match.,您可以使用request.resolver_match.view_name来访问视图名称

编辑:

如果我正确理解您的模型,则需要类似以下内容的逻辑。您需要在reverse中调整视图名称和参数。

def view(request, puzzle_level):
    if puzzle_level != request.user.level_completed + 1:
        return redirect(
            reverse(
                'puzzle_view_name',
                kwargs={'puzzle_level': request.user.level_completed + 1},
            )
        )
     ...