为什么我的Django request.method''GET'不是'POST'?

时间:2014-02-26 15:56:22

标签: python django django-forms

我在做预先填充的表格时遇到了这个奇怪的问题。 在我的模板中,表单方法明确表示为POST

<form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">{% csrf_token %}

但是在我的视图函数中,request.method结果为GET

以下是我的观看功能:

def editProfile(request,template_name):
    theprofile = request.user.profile

    print theprofile.fullname

    notificationMSG = ''
    print request.method

    if request.method == 'POST':
        form = UserProfileForm(request.POST,request.FILES, instance=theprofile)
        if form.is_valid():
            form.save()
            notificationMSG = "success!"

    else:
        form = UserProfileForm()
        print "error"

    dic = {'form':form,
           'notificationMSG':notificationMSG}

    return render_to_response(template_name, dic, context_instance=RequestContext(request))

当我运行它时,会打印出GET。 以前有人见过这个奇怪的吗

5 个答案:

答案 0 :(得分:3)

当您加载表单并通过点击URL检索远程数据时,请求方法是GET。 当您填写表单值并提交表单(使用post方法),即插入/更新远程数据时,请求方法是POST。

因此,在您打印request.method时的代码中,加载表单时输出为GET。这与您预先填充的表格无关。

答案 1 :(得分:0)

每次我使用action=""提交表单时,都会收到GET响应,但是一旦填写了实际的URL action="/client/",它就会作为POST通过。

答案 2 :(得分:0)

在我的情况下,发布时在HTML模板中操作结束时缺少“ /”。

答案 3 :(得分:0)

这是我到目前为止解决此类错误所需的步骤:

  1. method="post"添加到您的<form>元素
  2. 在URL末尾的action元素的<form>属性处添加缺失的“ /”
  3. 在您的type="submit"元素中添加一个<button>

Ps。不要忘记在{% csrf_token %}之后添加<form>

答案 4 :(得分:-1)

我也面临这个问题,但就我而言,在输入类型中,我已经写了 当我将其更改为type =“ submit”时,键入=“ button”即可解决。

对不起,当我再次遇到相同的问题然后得到实际的解决方案时,我被误解了。