2011-09-02 14 views
0

我有一個form.py文件與表格數據和一些驗證,但在我的模板文件中,我使用我的手動html文件,而不呈現它的形式.py,在從模板發佈數據後,如何在view.py中的數據無效(在form.py中驗證)時將所有數據返回給模板。我怎樣才能返回發佈數據到手動HTML在視圖

對不起,我的問題不是很清楚,我的問題是如何在發現錯誤後將數據呈現回views.py中的手動模板。

下面是代碼例如:

form.py(我有形式許多領域和一些驗證)

class Project_f(forms.Form): 

    slug=forms.CharField(max_length=100) 
    ...... 

views.py

def post_view(request, *args, **kwargs): 

    Pr_form=Project_f(request.POST,request.FILES) 
    if Pr_form.is_valid(): 
    ......... 

     return HttpResponseRedirect('/admin/mpm/project/') 

    '''when Pr_form is not valid''' 

    c={'form': Pr_form} 
    c.update(csrf(request)) 
    return render_to_response('project_form.html',c) 

模板

不使用form.py的手動模板,所有元素與fo中的相同rm.py,但格式/小部件不同,比如有些js。

+1

您能更好地指定您想要的做?也許還需要添加一個代碼示例?謝謝 –

+0

http://www.djangobook.com/zh/2.0/chapter07/ - 「製作聯繫表」部分可能是您需要的線索。但是你真的不清楚你想完成什麼。 – Pill

+0

「我想做一些與你應該做的事情截然不同的事情,我該如何讓它以同樣的方式工作?」如果你想以這種方式工作,按照你應該的方式去做。 –

回答

0

僅僅因爲您沒有將表單對象發送到模板,您仍然可以根據數據進行驗證。無論您提交什麼視圖,您只需要測試request.POST,然後執行舊的myForm = MyForm(data = request.POST),然後執行myForm.is_valid()。只要確保您在HTML中創建的表單具有他們所尊重的「名稱」元素就可以設置爲表單類中的內容。

class MyForm(forms.Form): 
    foo = forms.CharField() 
    bar = forms.CharField() 


def myView(request): 
    if request.POST: 
     myForm = MyForm(data=request.POST) 
     if myForm.is_valid(): 
     """ do stuff """ 
     else: 
     """ do stuff with errors """ 
    else: 
     """ print a page or somthing """ 
0

問:我怎樣才能使數據傳回在views.py手冊模板發現錯誤後?

我假定post_view是處理Pr_formPOST請求,雖然兩者GETPOST可以在same view進行處理。

答:Pr_form.is_valid()回報FalsePr_form實例將與適當的錯誤消息,並通過用戶輸入的數據進行填充,因此,如果您返回相同的Pr_form實例,該實例驗證失敗,您模板,它應該顯示錯誤消息和用戶輸入的數據,除非您已經自定義了在模板中顯示Pr_form的方式,如果是,則包括{{Pr_form.slug.errors}},如圖所示here

相關問題