django中form從後端查詢回顯到前端以及表單的提交到伺服器操作
這個表格是我以下程式碼出現的效果,以下程式碼也可以實現圖中修改儲存刪除操作。
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="修改" onclick="update(this)">
#在這裡用了兩種方法提交到伺服器,一種是submit提交,還有一種是超連結提交。 </td><td><input type="submit" value="儲存" onclick="save(this)"> </td><td><a href="/homework/delstu/{{ student.id }}"> <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")