1. 程式人生 > 程式設計 >Django表單提交後實現獲取相同name的不同value值

Django表單提交後實現獲取相同name的不同value值

i前端:nput_test.html

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>Search</title>
  <script>
 
  </script>
</head>
<body>
  <div><p>{{ result }}</p></div>
  <form action="" method="post">{% csrf_token %}
    <input type="text" name="key">
    <input type="text" name="key">
    <input type="submit" value="Search" >
  </form>
</body>
</html>

兩個<input >標籤name都是'key'

後臺:Django views.py

def setting(request):
  if request.method == 'POST':
    result_list = request.POST.getlist('key','')
    result = str(result_list)
    return render_to_response('input_test.html',locals(),context_instance=RequestContext(request))
  else:
    return render_to_response('input_test.html',context_instance=RequestContext(request))

執行後,在瀏覽器表單中輸入:

Django表單提交後實現獲取相同name的不同value值

開啟chrome ,提交表單,看FormData,其實瀏覽器已經向後臺提交了兩個name 為'key '的值。

Django表單提交後實現獲取相同name的不同value值


後臺也成功接收到一個列表 ['1','2']。

主要是這個API request.POST.getlist(),可以接收到所有共享同一個name的value,

QueryDict.getlist(key,default)¶

Returns the data with the requested key,as a Python list. Returns an empty list if the key doesn't exist and no default value was provided.


It's guaranteed to return a list of some sort unless the default value was no list.

參考:http://stackoverflow.com/questions/14348321/getting-distinct-values-from-inputs-that-share-the-same-name

補充知識:django中form從後端查詢回顯到前端以及表單的提交到伺服器操作

Django表單提交後實現獲取相同name的不同value值

這個表格是我以下程式碼出現的效果,以下程式碼也可以實現圖中修改儲存刪除操作。

1:首先你得建立一張表,在這裡建表語句我就不再寫了,再也簡單不過了。(別忘了加點資料哦!)

2:將表的資料通過view.py的函式返回到前端。在這裡stu是表名,將所有的返回結果all通過一個data字典傳到前端的all裡面去

def showstu(request):
  all=stu.objects.all()
  data={
    "all":all
  }

return render(request,"searchstu.html",context=data)

3:有資料我們就可以拿到前端來展示了。

4 :新建一個searchstu.html檔案,用來展示用的。

這個是最簡單的表用來提示用的

 <table border="1" cellpadding="0" >
      <tr >

      <td>姓名</td>
      <td>年齡</td>
      <td>性別</td>
      <td>班級</td>
      <td colspan="3">操作</td>
      </tr>
</table>

這個表是實現我們的功能的表

{% for student in all %}

<form action="{% url 'homework:updatestu' %}" method="get" >
<table border="1" cellpadding="0">
<tr><td>
 <input type="text" name="s_id" value={{student.id}} style="display:none">
</td><td>
  <input type="text" name="s_name" value={{student.stu_name}} >
</td><td>
  <input type="text" name="s_age"value={{ student.stu_age}}>
</td><td>
  <input type="text" name="s_sex"value={{ student.stu_sex}}>
</td><td>
  <input type="text" name="s_cla" value={{ student.stu_class}}>
</td><td>
    <input type="button" id="a" value="修改" οnclick="update(this)">

#在這裡用了兩種方法提交到伺服器,一種是submit提交,還有一種是超連結提交。
</td><td><input type="submit" value="儲存" οnclick="save(this)">
</td><td><a href="/homework/delstu/{{ student.id }}" rel="external nofollow" >
   <input type="button" value="刪除"></a>
</td></tr>
    </table>
    </form>

{% endfor %}

好了查詢功能已經做好了我們可以通過url訪問了

url(r"^showstu/",views.showstu,name="showstu"),

現在起要操作剩下的功能了,在這裡的一個比較笨的辦法,要想實現點選對應的按鈕刪除或者修改哪一個,就要把每行都設定成一個form提交表單。

因此我把form放在for迴圈內部,這樣迴圈一條就會多一個form表單。

5:實現提交後後端的處理函式,通過get獲取。

更新操作

def updatestu(request):
  id = request.GET.get("s_id")
  name=request.GET.get("s_name")
  sex=request.GET.get("s_sex")
  age=request.GET.get("s_age")
  cla=request.GET.get("s_cla")

#獲取資料庫中這個id將和這個id有關的資料設定成你get到前面的值,別忘記儲存!修改完後直接重新整理這個頁面也就是重定向到這個頁面

  stu1=stu.objects.filter(pk=id).first()
  stu1.stu_age=age
  stu1.stu_class=cla
  stu1.stu_sex=sex
  stu1.stu_name=name
  stu1.save()
  return HttpResponseRedirect("/homework/showstu")

刪除操作

def delstu(request,id):
  stu1=stu.objects.filter(pk=id).first()
  stu1.delete()
  return HttpResponseRedirect("/homework/showstu")

以上這篇Django表單提交後實現獲取相同name的不同value值就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。