2013-02-03 33 views
0

我試着寫這些變量,並將它們放回到Django快捷方式的渲染函數中,這意味着至少爲一個變量寫入4次。Django請求解壓並更有效地渲染本地模板

例如:

def foo(request): 

    bar = request.GET.get('bar') 
    bar += 1 
    result = {'bar':bar} 
    render('parrot.html', result) 

這是確定的,當我寫的只是一個變種,但是當涉及到20多個GET瓦爾,這完全是一場災難。

有什麼建議嗎?

回答

0

首先,request.GET.get('bar')返回值的類型是strNoneType代替int,所以你不能簡單地通過1添加。

其次,記得有「沒有魔法」,我想重寫類似下面的代碼,但還是有四次出現的bar

def foo(request): 
    try: 
     bar = 1 + int(request.GET['bar']) 
    except: 
     bar = 0 
    return render('parrot.html', {'bar':bar}) 

如果你不喜歡這種詳細,只需將try...except部分抽象爲幫助人,如get_int。當有20個或更多的變量操作時,您可能需要更高的抽象級別,例如Django forms ...

+0

哦,謝謝你的支持!我沉默寡言的大腦只是提醒我,表單必須與模型一起使用!從其他服務器獲取API時,這是一個很好的解決方案。 –