Django无法在基于类的视图中呈现表单

时间:2016-03-17 12:02:05

标签: django django-class-based-views

我有基于功能的视图,输出表单,但是当我尝试在基于类的视图 在页面上看不到任何形式,也没有错误

基于功能的视图

def edit_post(request,id):

    posts=Post.objects.get(id=id)
    forms = PostForm
    if request.method == 'POST':
        form = PostForm(request.POST, instance=posts)
        print form
        if form.is_valid():
            uncommit = form.save(commit=False)

            form.save()
            return redirect("home")
        else:
          print form.errors
    else:
        form = PostForm()
    return render(request, "edit_post.html", {'forms': forms,'posts':posts})

基于类的视图

class CourseEntryCreateView(CreateView):
    form_class = PostForm
    model = Post
    template_name = 'edit_post.html'

    def dispatch(self, *args, **kwargs):
        self.course = get_object_or_404(Post, pk=kwargs['id'])
        return super(CourseEntryCreateView, self).dispatch(*args, **kwargs)

    def form_valid(self, form):
        self.object = form.save(commit=False)
        # self.object.course = self.course
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())

我还在学习django,如果在基于课堂的视图中有任何更改,请告诉我

任何帮助表示赞赏..谢谢你的推荐

1 个答案:

答案 0 :(得分:1)

您的基于函数的视图很混乱,因为它使用了两个变量formforms。您应该将其更改为仅使用form。然后更新您的模板以使用{{ form }}代替{{ forms }}

修复模板后,表单应显示在模板中。如果您正在编辑现有对象,则应使用UpdateView代替CreateView。您不必覆盖dispatchform_value,通常有更好的方法。