我有基于功能的视图,输出表单,但是当我尝试在基于类的视图 在页面上看不到任何形式,也没有错误
基于功能的视图
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,如果在基于课堂的视图中有任何更改,请告诉我
任何帮助表示赞赏..谢谢你的推荐
答案 0 :(得分:1)
您的基于函数的视图很混乱,因为它使用了两个变量form
和forms
。您应该将其更改为仅使用form
。然后更新您的模板以使用{{ form }}
代替{{ forms }}
。
修复模板后,表单应显示在模板中。如果您正在编辑现有对象,则应使用UpdateView
代替CreateView
。您不必覆盖dispatch
或form_value
,通常有更好的方法。