[英]django-comments preview on the current page
我使用 django-comment 並希望在項目頁面上顯示預覽、表單錯誤。 我決定更好地使用裝飾器,寫這個
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
但在我看來不太好......有人能告訴我如何寫得更好嗎? 謝謝
使用裝飾器的想法是,您可以避免編寫大量代碼,這些代碼會在數據離開函數后弄亂您的數據。 在這種情況下,你正在做一些特殊的事情,比如使用項目 model,所以我想你只會使用它一次。 反正...
一種改進代碼的方法是始終將其傳遞給 kwargs['form'] 您的表單,即使它沒有錯誤,如下所示:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.