簡體   English   中英

當前頁面上的 django-comments 預覽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM