我正在研究django并遇到了一个问题,例如我有一个网址
http://domain.com/trial/1/
现在的问题是,当我将url从1更改为2时,如果它不是经过身份验证的用户,那么页面不应该加载而是显示错误消息,而是显示页面。如何阻止来自未经身份验证的用户的网址。
我搜索了解决方案,但没找到。
希望你能理解这个问题
由于
答案 0 :(得分:0)
Django有several built-in ways to limit access to views and model resources。从我所知道的代码来看,听起来你需要在每个资源的基础上限制对模型资源的访问。
假设用例,这是一种方法:
# models.py
class Trial(models.Model):
# whatever fields
login_required = models.BooleanField(default=False)
# views.py
def trial_detail(request, id):
trial = get_object_or_404(Trial, pk=id)
if trial.login_required and not request.user.is_authenticated():
return HttpResponseRedirect(reverse('your-login-view'))
return render(request, 'your-template.html', {'trial': trial})
这可以让您灵活地拥有一些需要身份验证的trial
模型,而另一些则不需要身份验证。
如果您还需要锁定每个用户的访问权限,您可以通过组,自定义权限等来执行此操作。
答案 1 :(得分:0)
您只需在相关模型函数的view.py文件中使用@login_required装饰器即可。
示例:
@login_required #login是必需的,一个人想更新其个人资料,这为其他用户的个人数据提供了安全性 def配置文件(要求): 返回render(request,'users / dashboard.html')