2011-07-12 10 views
0

私はdjango-commentを使用しています。そのプレビューが必要な場合、フォームのエラーがアイテムのページに表示されます。 ...誰かが良く書く方法を伝えることができます私はより良い利用デコレーター、このdjango-comments現在のページでのプレビュー

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 
関連する問題