django:在 view.py 中获取 HTML 表单值失败,空 <QueryDict: {}> 和 None 值
django: get HTML form value in view.py failed with empty <QueryDict: {}> and None value
我是 django 新手,正在学习 djangogirls 教程。通过一些修改,我试图从表单文本字段中获取值并将其打印在 view.py 中,然后在 html 页面的另一个“结果”字段中再次显示该值。
html:
<!DOCTYPE html>
<html>
<body>
<form>
<div>
<label>num_1:</label>
<input type = "text" name="num_1" value = "1" placeholder="Enter value">
</div>
<div>
<label>num_2:</label>
<input type = "text" name="num_2" value = "2" placeholder="Enter value">
</div>
</form>
<div>
<label>result:</label>
{{ result }}
</div>
<br>
</body>
</html>
view.py:
def post_list(request):
# posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
num1 = request.POST.get('num_1')
num2 = request.POST.get('num_2')
result = int(num1)+int(num2)
print(request.POST)
print("num1 ", num1)
# return render(request, 'blog/post_list.html', {'posts': posts})
return render(request, 'blog/post_list.html', {'result': result})
当我激活本地服务器时,我得到:
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
<QueryDict: {}>
num1 None
您需要为表单添加 method="post"
和 {% csrf_token %}。例如:
<form method="POST">
{% csrf_token %}
<div>
<label>num_1:</label>
<input type="text" name="num_1" value="1" placeholder="Enter value" />
</div>
<div>
<label>num_2:</label>
<input type="text" name="num_2" value="2" placeholder="Enter value" />
</div>
<br />
<div>{{ result }}</div>
<button type="submit">Submit</button>
</form>
在你的views.py
中:
def post_list(request):
result = 0
if request.method == "POST":
num1 = request.POST.get('num_1')
num2 = request.POST.get('num_2')
result = int(num1) + int(num2)
print(request.POST)
print(result)
context = {
'result': result
}
return render(request, 'blog/post_list.html', context)
这是前端:
和终端:
我是 django 新手,正在学习 djangogirls 教程。通过一些修改,我试图从表单文本字段中获取值并将其打印在 view.py 中,然后在 html 页面的另一个“结果”字段中再次显示该值。
html:
<!DOCTYPE html>
<html>
<body>
<form>
<div>
<label>num_1:</label>
<input type = "text" name="num_1" value = "1" placeholder="Enter value">
</div>
<div>
<label>num_2:</label>
<input type = "text" name="num_2" value = "2" placeholder="Enter value">
</div>
</form>
<div>
<label>result:</label>
{{ result }}
</div>
<br>
</body>
</html>
view.py:
def post_list(request):
# posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
num1 = request.POST.get('num_1')
num2 = request.POST.get('num_2')
result = int(num1)+int(num2)
print(request.POST)
print("num1 ", num1)
# return render(request, 'blog/post_list.html', {'posts': posts})
return render(request, 'blog/post_list.html', {'result': result})
当我激活本地服务器时,我得到:
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
<QueryDict: {}>
num1 None
您需要为表单添加 method="post"
和 {% csrf_token %}。例如:
<form method="POST">
{% csrf_token %}
<div>
<label>num_1:</label>
<input type="text" name="num_1" value="1" placeholder="Enter value" />
</div>
<div>
<label>num_2:</label>
<input type="text" name="num_2" value="2" placeholder="Enter value" />
</div>
<br />
<div>{{ result }}</div>
<button type="submit">Submit</button>
</form>
在你的views.py
中:
def post_list(request):
result = 0
if request.method == "POST":
num1 = request.POST.get('num_1')
num2 = request.POST.get('num_2')
result = int(num1) + int(num2)
print(request.POST)
print(result)
context = {
'result': result
}
return render(request, 'blog/post_list.html', context)
这是前端:
和终端: