2011-07-12 34 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