Django-限制用户访问网址

时间:2017-08-08 14:55:57

标签: python django django-templates django-urls

我正在创建一个app.it有很多字段来存储关于班级和学生的数据。

urls.py

url(r'^class/(?p<title>[-\w]+)/(?p<id>[\d]+)/',views.list,name ='list'),

基本上一个user(教师)可以创建多个class_room。每个class_room在该课程中有一个title和多个students

问题是:

每个class_room都有唯一的url。例如(mywebsite.com/science/88/)此链接仅供以下学生访问,而不是匿名用户。如果任何非跟随学生尝试一些随机url这样他们可以看到页面,这是一个循环漏洞( mywebsite.com/maths/2500 /).

如何限制学生访问他未关注的网页?

1 个答案:

答案 0 :(得分:2)

UserPassesTestMixin mixin可用于此效果。基本上,编写一个实现test_func函数的View类。此功能可以访问self,因此您可以阅读URL和用户。如果test_func返回True,则允许用户继续,否则传递给访问控制(如果配置,可能会重定向到登录表单)。