Django表單提交后實現(xiàn)獲取相同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 >標(biāo)簽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', locals(), context_instance=RequestContext(request))
運行后,在瀏覽器表單中輸入:

打開chrome ,提交表單,看FormData,其實瀏覽器已經(jīng)向后臺提交了兩個name 為'key '的值。

后臺也成功接收到一個列表 ['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.
補充知識:django中form從后端查詢回顯到前端以及表單的提交到服務(wù)器操作

這個表格是我以下代碼出現(xiàn)的效果,以下代碼也可以實現(xiàn)圖中修改保存刪除操作。
1:首先你得創(chuàng)建一張表,在這里建表語句我就不再寫了,再也簡單不過了。(別忘了加點數(shù)據(jù)哦?。?/p>
2:將表的數(shù)據(jù)通過view.py的函數(shù)返回到前端。在這里stu是表名,將所有的返回結(jié)果all通過一個data字典傳到前端的all里面去
def showstu(request):
all=stu.objects.all()
data={
"all":all
}
return render(request,"searchstu.html",context=data)
3:有數(shù)據(jù)我們就可以拿到前端來展示了。
4 :新建一個searchstu.html文件,用來展示用的。
這個是最簡單的表用來提示用的
<table border="1" cellpadding="0" >
<tr >
<td>姓名</td>
<td>年齡</td>
<td>性別</td>
<td>班級</td>
<td colspan="3">操作</td>
</tr>
</table>
這個表是實現(xiàn)我們的功能的表
{% 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)">
#在這里用了兩種方法提交到服務(wù)器,一種是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 %}
好了查詢功能已經(jīng)做好了我們可以通過url訪問了
url(r"^showstu/", views.showstu,name="showstu"),
現(xiàn)在起要操作剩下的功能了,在這里的一個比較笨的辦法,要想實現(xiàn)點擊對應(yīng)的按鈕刪除或者修改哪一個,就要把每行都設(shè)置成一個form提交表單。
因此我把form放在for循環(huán)內(nèi)部,這樣循環(huán)一條就會多一個form表單。
5:實現(xiàn)提交后后端的處理函數(shù),通過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")
#獲取數(shù)據(jù)庫中這個id將和這個id有關(guān)的數(shù)據(jù)設(shè)置成你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表單提交后實現(xiàn)獲取相同name的不同value值就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Django表單外鍵選項初始化的問題及解決方法
- django表單中的按鈕獲取數(shù)據(jù)的實例分析
- Django def clean()函數(shù)對表單中的數(shù)據(jù)進行驗證操作
- Django 構(gòu)建模板form表單的兩種方法
- Django form表單與請求的生命周期步驟詳解
- Django model.py表單設(shè)置默認(rèn)值允許為空的操作
- Django框架獲取form表單數(shù)據(jù)方式總結(jié)
- django之從html頁面表單獲取輸入的數(shù)據(jù)實例
- 解決django中form表單設(shè)置action后無法回到原頁面的問題
- django-xadmin根據(jù)當(dāng)前登錄用戶動態(tài)設(shè)置表單字段默認(rèn)值方式
- Django給表單添加honeypot驗證增加安全性
相關(guān)文章
python基于mysql實現(xiàn)的簡單隊列以及跨進程鎖實例詳解
這篇文章主要介紹了python基于mysql實現(xiàn)的簡單隊列以及跨進程鎖,需要的朋友可以參考下2014-07-07
在python中實現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法
今天小編就為大家分享一篇在python中實現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
python pytest進階之xunit fixture詳解
這篇文章主要介紹了python pytest進階之xunit fixture詳解,了解unittest的同學(xué)應(yīng)該知道我們在初始化環(huán)境和銷毀工作時,unittest使用的是setUp,tearDown方法,那么在pytest框架中同樣存在類似的方法,今天我們就來具體說明,需要的朋友可以參考下2019-06-06
注意import和from import 的區(qū)別及說明
這篇文章主要介紹了注意import和from import 的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

