Django项目 编辑功能

一.urls.py文件中添加函数和路径的对应关系

urlpatterns = [

path('book_list/', views.book_list), #图书列表信息
path('add_booklist/', views.add_booklist), #新增图书信息
path('del_booklist/', views.del_booklist),# 删除图书信息
path('egit_booklist/', views.egit_booklist), #编辑图书信息
]

二.views.py文件中添加egit_booklist函数
def egit_booklist(request):
if request.method =="POST":
egit_id = request.POST.get("id") #从post请求中获取id值
new_name = request.POST.get("egit_bookname") # 取出新创建的书名
new_type = request.POST.get("egit_booktype") # 取出新创建的类型
edit_obj= models.BOOK.objects.get(id=egit_id) #根据id值获得对象数据
edit_obj.name =new_name #将修改后的数据 替换原有数据
edit_obj.type = new_type
edit_obj.save() #进行提交操作
return redirect("/book_list/") #返回图书列表页面

#以下是作为get请求时的操作
egit_id= request.GET.get("id") #从get请求的数据中获得id
if egit_id:
egit_obj = models.BOOK.objects.get(id= egit_id) #找到这个id的对象
return render(request,"egit_booklist.html",{"egit_book_list":egit_obj})
#返回新增页面 并将刚才查到的数据返回去
else:
return HttpResponse("编辑的图书数据不存在")
三.新建edit_booklist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>编辑图书</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<form action="/egit_booklist/" method="post">
{# 这里要把自增的id带过来 style display设置为none post请求需要用到这个id#}
<p>
<input type="text" name="id" value="{{egit_book_list.id}}" style="display: none">
</p>
{# egit_book_list 是从views.py中的egit_booklist函数中返回的 #}
<p>书名
<input type="text" name="egit_bookname" value="{{egit_book_list.name}}">
</p>
<p>类型
<input type="text" name="egit_booktype" value="{{egit_book_list.type}}">
</p>
<button>
<input type="submit" value="提交">
</button>
</form>
</body>
</html>
四.在book_list中添加编辑按钮
<button>
<a href="/egit_booklist/?id={{bookmsg.id}}">编辑</a>
</button>
posted @ 2022-04-01 13:04  张丶先森  阅读(101)  评论(0)    收藏  举报