django - 如何从 django 中另一个 url 的视图函数中知道 url 路径?
问题描述
我有一组网址:
/home/
/register/
/login/
/puzzle/<pk>
所有前 3 个 url 都可以向最后一个 url 发出请求。
/puzzle/<pk>
是否可以从附加的视图函数中知道哪些 url 正在调用它?
编辑
所以问题是它是一个益智游戏,每个用户都有一个级别。如果他只有完成某个级别,那么他就可以进入下一个级别。因此,如果用户完成了第 3 级,我将始终向他显示带有 url 的 html 页面/puzzle/4
。
流程是:
用户注册。他的等级是0。一旦他注册,他将被重定向到puzzle/1/
用户登录。如果他完成了级别x,一旦他登录,他将被重定向到/puzzle/x+1
。
我已经处理了这两种类型。
但问题是,假设用户在页面中/puzzle/1/
。现在如果他手动将 url/puzzle/2/
从附加到的视图函数中更改为/puzzle/<pk>/
,我该如何处理上述情况?
解决方案
我相信你正在寻找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},
)
)
...
推荐阅读
- python - 如何避免长链的 try 和 except 语句?
- mysql - 按两列查询匹配字符串的数据
- javascript - 如何编写测试来模拟和处理 nodejs 中的 JSON 解析错误
- rxjs - AngularFire Rxjs 订阅 - 返回 nill 结果
- laravel - Laravel 5.8:宅基地重启后没有设置门面根
- php - 对数组中以逗号分隔的表的所有 id 进行排序
- cassandra - Cassandra SASI 索引或物化视图 - 性能提升
- angular - NullInjectorError:没有路由器的提供者!包装内
- python-3.x - Python在长字符串中搜索固定模式文本
- php - 请求超时 - 500 内部服务器错误