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)行后,在瀏覽器表單中輸入:
打開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.
參考:http://stackoverflow.com/questions/14348321/getting-distinct-values-from-inputs-that-share-the-same-name
補(bǔ)充知識(shí):django中form從后端查詢回顯到前端以及表單的提交到服務(wù)器操作
這個(gè)表格是我以下代碼出現(xiàn)的效果,以下代碼也可以實(shí)現(xiàn)圖中修改保存刪除操作。
1:首先你得創(chuàng)建一張表,在這里建表語句我就不再寫了,再也簡(jiǎn)單不過了。(別忘了加點(diǎn)數(shù)據(jù)哦!)
2:將表的數(shù)據(jù)通過view.py的函數(shù)返回到前端。在這里stu是表名,將所有的返回結(jié)果all通過一個(gè)data字典傳到前端的all里面去
def showstu(request): all=stu.objects.all() data={ 'all':all }return render(request,'searchstu.html',context=data)
3:有數(shù)據(jù)我們就可以拿到前端來展示了。
4 :新建一個(gè)searchstu.html文件,用來展示用的。
這個(gè)是最簡(jiǎn)單的表用來提示用的
<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' value='修改' οnclick='update(this)'>#在這里用了兩種方法提交到服務(wù)器,一種是submit提交,還有一種是超鏈接提交。</td><td><input type='submit' value='保存' οnclick='save(this)'></td><td><a href='http://www.aoyou183.cn/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)在起要操作剩下的功能了,在這里的一個(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ù),通過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è)頁面也就是重定向到這個(gè)頁面 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è)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. asp在iis7報(bào)錯(cuò)行號(hào)不準(zhǔn)問題的解決方法2. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介3. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……4. 原生js XMLhttprequest請(qǐng)求onreadystatechange執(zhí)行兩次的解決5. 刪除docker里建立容器的操作方法6. CSS代碼檢查工具stylelint的使用方法詳解7. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法8. jsp實(shí)現(xiàn)簡(jiǎn)單用戶7天內(nèi)免登錄9. CSS3實(shí)現(xiàn)動(dòng)態(tài)翻牌效果 仿百度貼吧3D翻牌一次動(dòng)畫特效10. 匹配模式 - XSL教程 - 4
