django - url阻塞

时间:2013-10-16 10:45:28

标签: python django

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

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

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

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

希望你能理解这个问题

由于

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装饰器即可。

示例:

views.py

@login_required #login是必需的,一个人想更新其个人资料,这为其他用户的个人数据提供了安全性 def配置文件(要求): 返回render(request,'users / dashboard.html')