2011-11-03 63 views
0

我正在使用我的Apache/PHP服務器和Django中的表單來處理我的所有帖子/請求。我怎樣才能設置它,使字段沒有設置它不會導致錯誤?發佈到Django應用程序

PHP形式:

<form action="http://www.mydomain.com:8003/login/" method="post"> 
<input type="text" name="email" id="email"><br> 
<input type="text" name="password" id="password"><br> 
<input type="checkbox" name="remember"><br> 
<input type="submit" value="send" id="send"> 
</form> 

Django的:

from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render_to_response 
from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def index(request): 
    if request.method == 'POST': 
     post = request.POST 
     email = post['email'] 
     pass = post['password'] 
     remember = post['remember'] 
     if remember: 
      expire_v = 30 
     else: 
      expire_v = None 
     response = HttpResponse(email) 
     response.set_cookie('emailaddress', email, max_age=expire_v) 
     response.set_cookie('password', pass, max_age=expire_v) 
     return response 

的問題是,如果還記得不檢查比它導致錯誤。

+0

什麼是錯誤的獲取參數? –

+0

好吧,算出來。當發送一個我想允許從Django外部空白的字段時,它需要是request.POST.get('remember',None)'而不是'request.POST ['remember']' – Bobby

回答

5

有一個可怕的很多錯這個代碼和不知道的錯誤:嘗試使用默認值,當你從請求

email = request.POST.get('email', False) 
password = request.POST.get('pass', False) # pass is a keyword in python 
remember = request.POST.get('remember', False) 
if email and password: 
    response = HttpResponse(email) 
    if remember: 
     response.set_cookie('emailaddress', email, max_age=30) 
     response.set_cookie('password', pass, max_age=30) 
    return response 
else: 
    # do something to indicate a problem