无法将参数从模板传递到 Django 视图
Posted
技术标签:
【中文标题】无法将参数从模板传递到 Django 视图【英文标题】:Can't pass parameter from template to Django view 【发布时间】:2021-05-11 09:44:53 【问题描述】:我将三个参数从我的 html 模板传递给 django view.py。但每当我点击提交时,它就会显示Page not found
,。我还是编程和 Django 的新手。有谁知道我该如何解决这个问题?
预期的结果是网页能够显示用户的所有输入。结果应显示在同一页面上,而不是显示在其他页面上。
我的模板
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<div class="modal-header">
<span class="close">×</span>
<h2>Alert Policies</h2>
</div>
<div class="modal-body">
<p style="font-size:14px">Please select an event parameter as well as the condition type and value that apply.</p>
<!-- parameter drop down -->
<form action="send" method="post">
<label for="Parameter"> <b style="font-size:13px" > Event parameter to evaluate </b></label>
<select name="Parameter" id="Parameter" style="width:340px; font-family: 'Quicksand', sans-serif;">
<option disabled selected value>select a parameter</option>
<option value="Subject">Subject</option>
<option value="Text">Text</option>
</select>
<br><br>
<label for="Condition"> <b style="font-size:13px" > Type of condition </b></label>
<select name="Condition" id="Condition" style="width:340px; margin-left:69px; font-family: 'Quicksand', sans-serif;">
<option disabled selected value>select a condition</option>
<option value="Equals">Equals</option>
<option value="Contain">Contain</option>
<option value="NotContain">Does not contain</option>
</select>
<br><br>
<label for="valuetomatch"> <b style="font-size:13px" > Value to match</b></label>
<input type="text" id="valuetomatch" name="valuetomatch" style="width:333px; margin-left:80px; font-family: 'Quicksand', sans-serif;">
<br>
<br>
<button class="button"><span>OK</span></button>
</form>
key
</div>
我的视图.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return render(request,'DemoApp/hi.html')
def send(request):
a=str(request.POST["Parameter"])
b=str(request.POST["Condition"])
c=str(request.POST["valuetomatch"])
haha = a+b+c
return render(request,'DemoApp/hi.html','key':haha)
# Create your views here.
我的网址
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('', views.index,name='home-page'),
path('', views.send, name='test'),
]
【问题讨论】:
【参考方案1】:您的表单有<form action="send" method="post">
,但您在/send
没有任何网址。因此,您可以像这样更改 urls.py 文件:
urlpatterns = [
path('', views.index,name='home-page'),
path('send/', views.send, name='test'),
]
你应该考虑在模板中使用命名的url(通过url template tag),像这样:
<form action="% url 'test' %" method="post">
【讨论】:
您好,感谢您的回复。它现在可以工作了!以上是关于无法将参数从模板传递到 Django 视图的主要内容,如果未能解决你的问题,请参考以下文章
django - 将参数从模板传递到 models.py 的函数