7

我有一个网站,用户可以在其中创建和编辑自己的列表。

我使用通用视图 CreateView 来允许用户创建列表。

我想使用通用视图 UpdateView 来允许他们编辑列表,但login_required=True在这种情况下还不够,因为只有列表创建者可以编辑他/她的列表。

2个问题:

1)我可以在 URLconf 中指定任何参数来添加此限制吗?

2)我可以强加那些只能与POST而不是GET一起使用的通用视图吗?

谢谢

4

2 回答 2

9

您可以get_queryset覆盖UpdateView

def get_queryset(self):
    base_qs = super(YourListUpdateView, self).get_queryset()
    return base_qs.filter(user=self.request.user)
于 2011-12-21T20:14:49.670 回答
2

1) you can write decorator and use it same way as login_required decorator, ie:

def user_permitted(function):
    def decorator(function):
        def _wrapped_view(request, *args, **kwargs):
            # get obj from request
            if obj.user != request.user:
                return HttpResponseRedirect(reverse('forbidden'))
            return function(request, *args, **kwargs)
        return _wrapped_view
    return decorator(function)

2) yes, see decorators and Decorating class-based views

于 2011-12-21T19:39:50.107 回答