我正在研究 django,遇到了一个问题,例如我有一个 url
http://domain.com/trial/1/
现在的问题是,当我将 url 从 1 更改为 2 时,如果不是经过身份验证的用户,则页面不应加载,而是显示错误消息,而是显示页面。如何阻止未经身份验证的用户的 url。
我搜索了解决方案,但没有找到。
希望你理解问题
谢谢
Django 有几种内置方法来限制对视图和模型资源的访问。根据我对您的代码的了解,听起来您需要在每个资源的基础上限制对模型资源的访问。
假设该用例,这是一种方法:
# 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
需要身份验证的模型,而另一些则不需要。
如果您还需要锁定每个用户的访问权限,您可以通过组、自定义权限等来实现。
您可以在相关模型函数的 view.py 文件中简单地使用 @login_required 装饰器。
例子:
@login_required #login 是必需的