2017-06-14 57 views
0

我是Django和Python的初學者!我遇到了一個問題!如何在python(Django)中取消設置(刪除)POST變量

我嘗試在我的軟件中創建一個會話系統。當用戶斷開連接時(通過按鈕),用戶被重定向到連接頁面。

不幸的是,form.is_valid()仍然是有效的,因此自動用戶再次連接。

我不知道爲什麼?我怎樣才能重置表單或POST值。

謝謝你,

托馬斯

PS:爲連接的觀點(在我的應用程序的views.py)的代碼是:

def connexion(request): 
contact_form = Connect(request.POST or None) 

if contact_form.is_valid(): 
    print(contact_form.cleaned_data["id"]) 
    user_check = uc(contact_form.cleaned_data["id"], contact_form.cleaned_data["pwd"]) 
    if user_check.identity_verified: 
     request.session['usr'] = user_check.get_compact_value() 
     return redirect(home) 
    else: 
     return render(request, 'conn\\connexion.html', {'form': Connect, 'errorId': True}) 
    del user_check 
else: 
    return render(request, 'conn\\connexion.html', {'form': Connect, 'errorId': False}) 

回答

2

有兩件事情你應該在這裏改變。

首先,如果請求是POST,則只應執行表單驗證。其次,即使它回到同一頁面,你也應該在發佈請求後總是重定向;這將重置值。

1

請注意,您的del在返回之後,因此它永遠不會被執行。但你應該這樣做。

您的麻煩是因爲在成功提交表單後,您沒有遵循標準的django重定向模式。

def connexion(request): 

    contact_form = Connect(request.POST or None) 
    if request.method == 'POST': 
     if contact_form.is_valid(): 
      print(contact_form.cleaned_data["id"]) 
      user_check = uc(contact_form.cleaned_data["id"], contact_form.cleaned_data["pwd"]) 
      if user_check.identity_verified: 
       request.session['usr'] = user_check.get_compact_value() 
       return redirect(home) # redirect ok 
      else: 
       return redirect('somewhere else') 
    return render(request, 'conn\\connexion.html', {'form': Connect, 'errorId': False}) 
0

Ty, 我找到了!我用ajax來調用視圖(爲什麼?我沒有remenber!) 現在我只使用<a href='...'></a>而且沒關係!