-3

我正在研究 django,遇到了一个问题,例如我有一个 url

http://domain.com/trial/1/

现在的问题是,当我将 url 从 1 更改为 2 时,如果不是经过身份验证的用户,则页面不应加载,而是显示错误消息,而是显示页面。如何阻止未经身份验证的用户的 url。

我搜索了解决方案,但没有找到。

希望你理解问题

谢谢

4

2 回答 2

3

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需要身份验证的模型,而另一些则不需要。

如果您还需要锁定每个用户的访问权限,您可以通过组、自定义权限等来实现。

于 2013-10-16T12:42:07.213 回答
0

您可以在相关模型函数的 view.py 文件中简单地使用 @login_required 装饰器。

例子:

视图.py

@login_required #login 是必需的

于 2020-05-15T13:34:02.437 回答