如何在Djang中更新/创建/删除视图时使用登录

2024-10-03 15:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用@login_reuqired装饰器。对于普通函数来说,它运行得很好,但是当我试图在我的UpdateView中使用它时,我遇到了这个错误"AttributeError: 'function' object has no attribute 'as_view'"

这是我的view.py

@login_required
class RoomUpdate(UpdateView):
    model = Room
    fields = ['Name', 'RoomTypeID']
    template_name='WebApp/room_form.html'`

这是我的urls.py

^{pr2}$

有什么建议吗?在


Tags: 函数nopyviewobjectas错误login
2条回答

对于Django 1.9+您可以使用mixin:

from django.contrib.auth.mixins import LoginRequiredMixin

class RoomUpdate(LoginRequiredMixin, UpdateView):
    fields = ['Name', 'RoomTypeID']
    template_name='WebApp/room_form.html'`

您需要修饰dispatch方法:

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

class RoomUpdate(UpdateView):
    model = Room
    fields = ['Name', 'RoomTypeID']
    template_name='WebApp/room_form.html'

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(RoomUpdate, self).dispatch(*args, **kwargs)

或者您可以将login_required用作urls.py中的函数,如下所示:

^{pr2}$

由于Django 1.9+版本,您还可以使用mixin:

from django.contrib.auth.mixins import LoginRequiredMixin

class RoomUpdate(LoginRequiredMixin, UpdateView):
    fields = ['Name', 'RoomTypeID']
    template_name='WebApp/room_form.html'

相关问题 更多 >