Django-限制用户访问url

Django- restrict users to access urls

我正在创建一个 app.it has manytomany 字段来存储关于 class 和学生的数据。

urls.py

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

基本上一个user(老师)可以创造很多class_room。每个class_room有一个title,然后有很多students [=42] =].

问题是:

每个 class_room 都有唯一的 url。例如(mywebsite.com/science/88/)这个 link 仅供关注的学生访问,而不是匿名的 user.This 如果任何非关注学生尝试一些随机的 url 是一个漏洞 url他们可以看到页面 (mywebsite.com/maths/2500/).

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

UserPassesTestMixin mixin 可以用来达到这个效果。基本上,编写一个实现 test_func 功能的视图 Class。此函数可以访问 self,因此您可以读取 URL 和用户。如果 test_func returns True,则允许​​用户继续,否则将传递给访问控制(如果已配置,可能会重定向到登录表单)。