首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COnverting从函数到类继承密码错误

COnverting从函数到类继承密码错误
EN

Stack Overflow用户
提问于 2017-05-18 16:46:52
回答 1查看 22关注 0票数 0

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

视图看上去几乎完全相同,只有表单和它们的名称不同。其中一项如下:

代码语言:javascript
复制
@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,它看起来如下:

代码语言:javascript
复制
@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

不幸的是,错误日志显示了一些奇怪的东西:

代码语言:javascript
复制
  File "/home/cruel/PycharmProjects/silverak/ak47/views.py", line 249, in <module>
    class AddMovieView(AddingView):
TypeError: function() argument 1 must be code, not str
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-18 20:46:31

不能在类上使用函数装饰符。必须编写一个装饰器,特别是在类上工作;而login_required不这样做。

相反,使用 mixin

代码语言:javascript
复制
class AddingView(LoginRequired, CreateView):
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44053626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档