[英]How to pass values of drop down from html template to views in Django?
[英]How can I pass values/parameters from HTML to Django Views?
我想通常在ajax中这样做。
但是,例如,如果我有一个按钮和一个具有查询值的搜索输入框,我怎样才能将按钮点击的搜索值(以及可能通过表单字段获得的多个值/参数)传递给Django视图网址?
HTML
<div>
<input id="search" name="search" type="text" class="query-search" placeholder="Search...">
<a class="btn btn-primary btn-lg btn-space col-sm-3" href="{% url 'routes_view' %}">View Routes</a>
</div>
查看
def view_detail(request):
...
<How to get values from HTML without using ajax? Or its the only way?>
网址
url(r'^view/', views.view_detail, name='view_detail')
从前面的答案中了解到,如果您不希望将搜索值作为URL参数发送,您可以通过AJAX POST调用发送它们并在视图中处理它们,如下所示:
<div>
<input id="search" name="search" type="text" class="query-search" placeholder="Search...">
<input onclick="setGetParameter()" type="button" class="btn btn-primary" value = "View Details"/>
</div>
<script>
function setGetParameter(){
var search_word = $("#search").val();
$.ajax({
type: "POST",
url: {% url 'view_detail' %},
data: search_word,
success: function(result){
alert("Success");
}
});
}
</script>
你的观点应该是这样的。
def search_view(request):
if request.method == "POST":
search_word = request.POST['data']
URL配置将保持其他答案描述它们的方式。
您可以使按钮像模板中的链接一样工作,并在onclick事件上添加js函数,然后获取搜索输入值并将搜索参数添加到url window.location.href
:
<div>
<input id="search" name="search" type="text" class="query-search" placeholder="Search...">
<input onclick="setGetParameter()" type="button" class="btn btn-primary" value = "View Details"/>
</div>
<script>
function setGetParameter(){
searchWord = document.getElementById('search').value;
window.location.href = "{% url 'view_detail' %}" + "?search="+searchWord;
}
</script>
在视图中,您可以使用request.GET.get('search')
来获取从模板输入的参数(搜索内容),如下所示:
def view_detail(request):
searchWord = request.GET.get('search')
return HttpResponse(searchWord)
BTW,urlpatterns看起来像这样:
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^view$', views.view_detail, name='view_detail'),
]
您可以创建HTML表单,如果您不想在url中传递值,可以使用post方法提交表单。
<div>
<form action="{% url 'view_detail' %}" method="post">
{% csrf_token %}
<input id="search" name="search" type="text" class="query-search"
placeholder="Search...">
<input class="btn btn-primary" type="submit" value="submit">
</form>
</div>
然后在您的视图中,您可以将数据作为request.POST.get('search')获取:
def view_detail(request):
searchWord = request.POST.get('search','')
return HttpResponse(searchWord)
以同样的方式,您可以传递多个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.