Django 从函数转换为类继承的隐错误

Django 从函数转换为类继承的隐错误,django,python-3.x,inheritance,Django,Python 3.x,Inheritance,我正在尝试将我的3个类似的函数视图更改为基于继承类的视图 视图看起来几乎相同,只是形式和名称不同。其中一项是: @login_required def add_video(request): if request.method == 'POST': movie_form = MovieForm(request.POST) if movie_form.is_valid(): user = request.user

我正在尝试将我的3个类似的函数视图更改为基于继承类的视图

视图看起来几乎相同,只是形式和名称不同。其中一项是:

@login_required
def add_video(request):
    if request.method == 'POST':
        movie_form = MovieForm(request.POST)
        if movie_form.is_valid():
            user = request.user
            new_post = movie_form.save(commit=False)
            new_post.author = user
            new_post.save()
            movie_form.save_m2m()
            messages.success(request, 'Post successfully added')
            return redirect(new_post)
    else:
        movie_form = MovieForm()
    return render(request, 'ak47/movie.html', {'movie_form': movie_form})
作为CBV,它看起来是这样的:

@login_required
class AddingView(CreateView):
        def form_valid(self, form):
            user = self.request.user
            new_post = form.save(commit=False)
            new_post.author = user
            new_post.save()
            form.save_m2m()
            messages.success(request, 'Post successfully added')

class AddMovieView(AddingView):
    form_class = MovieForm
class AddUrlView(AddingView):
    form_class = UrlImgForm
不幸的是,错误日志显示了一些奇怪的东西:

  File "/home/cruel/PycharmProjects/silverak/ak47/views.py", line 249, in <module>
    class AddMovieView(AddingView):
TypeError: function() argument 1 must be code, not str
文件“/home/craul/PycharmProjects/silverak/ak47/views.py”,第249行,在
类AddMovieView(AddingView):
TypeError:function()参数1必须是代码,而不是str

不能在类上使用函数装饰器。一个装饰师必须被专门写在课堂上工作<代码>需要登录不需要

相反,请使用以下命令:


我不认为问题出在您显示的代码部分。请编辑您的问题,以显示
视图.py
第249行附近的代码部分。类AddMovieView(AddingView)的声明是249行,它的正上方是类AddingView。我也找不到这段代码中的任何错误,错误的命名对我也没有帮助。在我编写“class AddMovieView(AddingView):form_class=MovieForm”类之后出现了问题。现在我评论并使用函数视图,但这个问题的解决方案对我来说很重要。
CreateView
是一个类吗?这个问题可能是由从函数继承的类引起的,而不是由另一个类引起的。查看您的CBV代码,看看这是否是问题所在。
class AddingView(LoginRequired, CreateView):
    pass