2011-07-12 144 views
0

我使用django评论,并希望预览,表单错误显示在项目的页面上。我决定更好地利用装饰,写这django评论在当前页面预览

def wrap(func): 
    def wrapper(request, *args, **kwargs): 
     item = Item.objects.get(url=kwargs['url']) 
     form = get_form()(item) 
     kwargs['form'] = form 
      if request.method == 'POST': 
      data = request.POST.copy() 
      form = get_form()(item, data) 
      if form.errors: 
       kwargs['form'] = form 
      else:  
       post_comment(request, next=None, using=None) 
     return func(request, *args, **kwargs) 
    return wrapper 

,但在我看来并不好......能有人告诉怎么写比较好?谢谢

回答

0

使用装饰器的想法是,你可以避免编写大量代码,它应该在你的数据离开功能后混乱。在这种情况下,你正在使用Item模型等特定的东西,所以我想你只会使用它一次。反正...

提高代码的一个办法总是传递到kwargs [“形式”]表单,即使它不存在错误,如:

def wrap(func): 
    def wrapper(request, *args, **kwargs): 
     item = Item.objects.get(url=kwargs['url']) 
     if request.method == 'POST': 
      data = request.POST.copy() 
      form = get_form()(item, data) 
      kwargs['form'] = form 
      if not form.errors: 
       post_comment(request, next=None, using=None) 
     return func(request, *args, **kwargs) 
    return wrapper