Django表單提交后實(shí)現(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>
兩個(gè)<input >標(biāo)簽name都是'key'
后臺(tái):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))
運(yùn)行后,在瀏覽器表單中輸入:
打開(kāi)chrome ,提交表單,看FormData,其實(shí)瀏覽器已經(jīng)向后臺(tái)提交了兩個(gè)name 為'key '的值。
后臺(tái)也成功接收到一個(gè)列表 ['1', '2']。
主要是這個(gè)API request.POST.getlist(),可以接收到所有共享同一個(gè)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.
補(bǔ)充知識(shí):django中form從后端查詢回顯到前端以及表單的提交到服務(wù)器操作
這個(gè)表格是我以下代碼出現(xiàn)的效果,以下代碼也可以實(shí)現(xiàn)圖中修改保存刪除操作。
1:首先你得創(chuàng)建一張表,在這里建表語(yǔ)句我就不再寫(xiě)了,再也簡(jiǎn)單不過(guò)了。(別忘了加點(diǎn)數(shù)據(jù)哦?。?/p>
2:將表的數(shù)據(jù)通過(guò)view.py的函數(shù)返回到前端。在這里stu是表名,將所有的返回結(jié)果all通過(guò)一個(gè)data字典傳到前端的all里面去
def showstu(request): all=stu.objects.all() data={ "all":all } return render(request,"searchstu.html",context=data)
3:有數(shù)據(jù)我們就可以拿到前端來(lái)展示了。
4 :新建一個(gè)searchstu.html文件,用來(lái)展示用的。
這個(gè)是最簡(jiǎn)單的表用來(lái)提示用的
<table border="1" cellpadding="0" > <tr > <td>姓名</td> <td>年齡</td> <td>性別</td> <td>班級(jí)</td> <td colspan="3">操作</td> </tr> </table>
這個(gè)表是實(shí)現(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)做好了我們可以通過(guò)url訪問(wèn)了
url(r"^showstu/", views.showstu,name="showstu"),
現(xiàn)在起要操作剩下的功能了,在這里的一個(gè)比較笨的辦法,要想實(shí)現(xiàn)點(diǎn)擊對(duì)應(yīng)的按鈕刪除或者修改哪一個(gè),就要把每行都設(shè)置成一個(gè)form提交表單。
因此我把form放在for循環(huán)內(nèi)部,這樣循環(huán)一條就會(huì)多一個(gè)form表單。
5:實(shí)現(xiàn)提交后后端的處理函數(shù),通過(guò)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ù)庫(kù)中這個(gè)id將和這個(gè)id有關(guān)的數(shù)據(jù)設(shè)置成你get到前面的值,別忘記保存!修改完后直接刷新這個(gè)頁(yè)面也就是重定向到這個(gè)頁(yè)面 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表單提交后實(shí)現(xiàn)獲取相同name的不同value值就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Django表單外鍵選項(xiàng)初始化的問(wèn)題及解決方法
- django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析
- Django def clean()函數(shù)對(duì)表單中的數(shù)據(jù)進(jìn)行驗(yàn)證操作
- Django 構(gòu)建模板form表單的兩種方法
- Django form表單與請(qǐng)求的生命周期步驟詳解
- Django model.py表單設(shè)置默認(rèn)值允許為空的操作
- Django框架獲取form表單數(shù)據(jù)方式總結(jié)
- django之從html頁(yè)面表單獲取輸入的數(shù)據(jù)實(shí)例
- 解決django中form表單設(shè)置action后無(wú)法回到原頁(yè)面的問(wèn)題
- django-xadmin根據(jù)當(dāng)前登錄用戶動(dòng)態(tài)設(shè)置表單字段默認(rèn)值方式
- Django給表單添加honeypot驗(yàn)證增加安全性
相關(guān)文章
基于python中staticmethod和classmethod的區(qū)別(詳解)
下面小編就為大家?guī)?lái)一篇基于python中staticmethod和classmethod的區(qū)別(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10python 利用jieba.analyse進(jìn)行 關(guān)鍵詞提取
這篇文章主要介紹了python 利用jieba.analyse進(jìn)行關(guān)鍵詞提取的方法,幫助大家更好的利用python,感興趣的朋友可以了解下2020-12-12python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-02-02Python基于unittest實(shí)現(xiàn)測(cè)試用例執(zhí)行
這篇文章主要介紹了Python基于unittest實(shí)現(xiàn)測(cè)試用例執(zhí)行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11