我在做预先填充的表格时遇到了这个奇怪的问题。
在我的模板中,表单方法明确表示为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
。
以前有人见过这个奇怪的吗
答案 0 :(得分:3)
当您加载表单并通过点击URL检索远程数据时,请求方法是GET。 当您填写表单值并提交表单(使用post方法),即插入/更新远程数据时,请求方法是POST。
因此,在您打印request.method
时的代码中,加载表单时输出为GET。这与您预先填充的表格无关。
答案 1 :(得分:0)
每次我使用action=""
提交表单时,都会收到GET响应,但是一旦填写了实际的URL action="/client/"
,它就会作为POST通过。
答案 2 :(得分:0)
在我的情况下,发布时在HTML模板中操作结束时缺少“ /”。
答案 3 :(得分:0)
这是我到目前为止解决此类错误所需的步骤:
method="post"
添加到您的<form>
元素action
元素的<form>
属性处添加缺失的“ /” type="submit"
元素中添加一个<button>
Ps。不要忘记在{% csrf_token %}
之后添加<form>
。
答案 4 :(得分:-1)
我也面临这个问题,但就我而言,在输入类型中,我已经写了 当我将其更改为type =“ submit”时,键入=“ button”即可解决。
对不起,当我再次遇到相同的问题然后得到实际的解决方案时,我被误解了。