如何将值/参数从 HTML 传递到 Django 视图?

Rei*_*ion 3 python django

我认为我通常会在 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>
Run Code Online (Sandbox Code Playgroud)

观看次数

def view_detail(request): 
   ...
   <How to get values from HTML without using ajax? Or its the only way?>
Run Code Online (Sandbox Code Playgroud)

网址

url(r'^view/', views.view_detail, name='view_detail')
Run Code Online (Sandbox Code Playgroud)

Piy*_*Das 7

从上一个答案中了解到,如果您不希望将搜索值作为 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>
Run Code Online (Sandbox Code Playgroud)

您的视图应如下所示。

def search_view(request):
    if request.method == "POST":
        search_word = request.POST['data']
Run Code Online (Sandbox Code Playgroud)

URL 配置将保持其他答案描述它们的方式。


Ank*_*pta 6

如果您不想在 url 中传递值,您可以创建一个 HTML 表单并可以使用 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>
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中,您可以将数据作为 request.POST.get('search') 获取:

def view_detail(request):
    searchWord = request.POST.get('search','')
    return HttpResponse(searchWord)
Run Code Online (Sandbox Code Playgroud)

以同样的方式,您可以传递多个参数。