2014-03-26 48 views
1

当我使用下面的代码时,第一个if语句总是返回一个False。但是,如果我将其更改为request.POST,它将返回一个True。有谁知道为什么?有没有其他人经历过这个?我使用method =“post”的基本形式发送数据。“if request.method =='POST':”== False,但是“if request.POST”== True。为什么? - Django

def add_new_user(request): 
    context = RequestContext(request) 
    if request.method == 'POST': 
     form = NewUserForm(request.POST) 
     if form.is_valid(): 
      form.save(commit=True) 
      return index_input(request) 
     else: 
      print form.errors 
    else: 
     form = NewUserForm() 

    return render_to_response('appname/add_new_user.html', 
     {'form': form}, context) 
+0

仅供参考,Django的[文件](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.POST)清楚地说'你不应该使用如果request.POST检查使用POST方法。 – alecxe

+0

另请参阅:http://buddylindsey.com/django-request-post-vs-request-method/ – alecxe

+0

但request.post返回true,我的表单保存到数据库。它是request.method ==“POST”总是返回false,无论如何。 – Kazanz

回答

0

一个空的字典将在Python,这就是为什么request.POST将返回False如果在POST的QueryDict没有数据返回False

$ d = {} 
$ d is True 
$ False 
+0

但request.post返回true。 request.method = post正在返回false。 – Kazanz

+0

如果request.POST字典中有数据,它将返回'True'。 request.method应该检查一个大写字符串:request.method =='POST' – Brandon

+0

这可行!我不知道为什么它以前没有工作。感谢您的帮助。 – Kazanz

相关问题