如何解决Django request.POST返回一个空字典
如果块直接进入最后一个else,代码将跳过整个块。我正在使用django.forms从用户那里获取输入。当方法设置为GET时,也会发生同样的事情。我用普通的HTML形式尝试了相同的结果。但是很奇怪的事实是,它在项目的初始阶段就可以正常工作,而我正在尝试自己的视图和模型,这开始在项目中导致错误,因为我无法获得用户输入。
views.py
def form(request):
form = InputForm()
return render(request,'classifier/form.html',{'form':form})
def output(request):
print(request.POST) # returns empty dict
if request.method == "POST":
form = InputForm(request.POST)
if form.is_valid():
url = form.cleaned_data['input_url']
print(url)
return render(request,'classifier/output.html',{'url':url})
else:
print(form.errors())
else:
print("error")
error = "Oops"
return render(request,{'url':error})
form.html
<form action="{% url 'classifier:output' %}" method="POST">
{% csrf_token %}
{% for non_field_error in form.non_field_error %}
<p class="help is-danger">{{ non_field_error}}</p>
{% endfor %}
{{ form }}
{% for error in form.erros %}
<p class="help is-danger">{{ error }}</p>
{% endfor %}
<div class="text-center">
<button type="button" class="btn btn-primary" id="btn" value='Save'><a href="{% url 'classifier:output' %}">Submit</a></button>
</div>
</form>
urls.py
from django.urls import path
from . import views
app_name = 'classifier'
urlpatterns = [
path('',views.index,name='index'),path('form/',views.form,name='form'),path('output/',views.output,name='output'),]
解决方法
在您的模板中:
<div class="text-center">
<button type="button" class="btn btn-primary" id="btn" value='Save'><a href="{% url 'classifier:output' %}">Submit</a></button>
</div>
现实中的“提交”按钮是链接:<a href="{% url 'classifier:output' %}">Submit</a>
所以下面有一个简单的链接。
代码的更正部分如下:
<div class="text-center">
<button type="submit" class="btn btn-primary" id="btn">Submit</button>
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。