Django更智能的声明式通用视图。
django-smarter的Python项目详细描述
概述
我们要写很多次:
@login_requireddefedit_post(request,pk):post=get_object_or_404(Post,pk=pk)ifrequest.method=='POST':form=EditPostForm(request.POST,instance=post)ifform.is_valid():post=form.save()returnredirect(post.get_absolute_url())else:form=EditPostForm()returnrender(request,'edit_post.html',{'form':form})对不对?好吧,为这种可重复的视图编写一些可重用的帮助程序是可以的,但是当我们不需要复杂的帮助程序时,我们可以这样做:
classPostViews(smarter.GenericViews):model=Postoptions={'add':{'form':NewPostForm,'decorators':(login_required,)},'edit':{'form':EditPostForm,'decorators':(login_required,)},'remove':{'decorators':(login_required,)}}
就这样。