[英]Django request.POST returns an empty dict
代碼跳過整個 if 塊直接轉到最后一個 else。 我正在使用 django.forms 從用戶那里獲取輸入。 當方法設置為 GET 時會發生同樣的事情。 我嘗試了與正常 HTML forms 相同的結果。 但奇怪的事實是,它在項目的初始階段正常工作,而我正在試驗我的視圖和模型,這開始導致我的項目出現錯誤,因為我無法獲得用戶輸入。
視圖.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, 'classifier/output.html',{'url':error})
表格.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>
網址.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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.