python-ORM写图书管理系统
步骤
1.创建一个新django项目 2.初始化环境 创建app, 注册app, 注释中间件验证 'django.middleware.csrf.CsrfViewMiddleware', 填写数据库连接信息 创建静态文件目录static(可省略) __init__.py导入数据库连接模块 import pymysql pymysql.install_as_MySQLdb() models.py创建数据库press from django.db import models class Press(models.Model): #id主键 id = models.AutoField(primary_key=True) #出版社名称 name = models.CharField(max_length=32) def __str__(self): return self.name 在Terminal窗口执行数据库迁移的命令: python manage.py makemigrations python manage.py migrate prcharm连接mysql,写入测试数据
展示出版社信息
views.py from app01.models import Press #出版社列表 def press(request): # 1,去数据库查所有的出版社(order_by从大到小排序) ret = Press.objects.all().order_by('id') print(ret) print(ret[0]) print(ret[0].name) # 2,在HTML页面上展示出来 return render(request,'press.html',{'ret':ret}) # return HttpResponse('ok') press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>出版社</title> </head> <body> <table border="1"> <thead> <tr> <th>id</th> <th>名称</th> </tr> </thead> <tbody> {% for i in ret %} <tr> {# <td>{{ forloop.counter }}</td>#} <td>{{ i.id }}</td> <td>{{ i.name }}</td> </tr> {% endfor %} </tbody> </table> </body> </html> models.py class Press(models.Model): #id主键 id = models.AutoField(primary_key=True) #出版社名称 name = models.CharField(max_length=32) def __str__(self): return self.name urls.py urlpatterns = [ .... url(r'^press/', views.press), #展示 ]
添加出版社
urls.py urlpatterns = [ .... url(r'^add_press/', views.add_press), #添加 ] views.py from app01.models import Press #添加出版社的处理函数 def add_press(request): if request.method =='POST': # 表示用户填写完了,要给我发送数据 # 1,取到用户填写的出版社数据 press_name = request.POST.get('name') Press.objects.create(name=press_name) return redirect('/press/') # 2,将数据添加到数据库中 # 3,跳转到出版社列表页面 # 1.返回一个添加页面,让用户在上边填写新的出版社信息 return render(request,'add_press.html') add_press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加出版社</title> </head> <body> <form action="/add_press/" method="post"> <input type="text" name="name"> <input type="submit"> </form> </body> </html> press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>出版社</title> </head> <body> <h1>出版社列表</h1> <a href="/add_press/">添加出版社</a> <table border="1"> <thead> <tr> <th>id</th> <th>名称</th> </tr> </thead> <tbody> {% for i in ret %} <tr> {# <td>{{ forloop.counter }}</td>#} <td>{{ i.id }}</td> <td>{{ i.name }}</td> </tr> {% endfor %} </tbody> </table> </body> </html>
删除编辑
urls.py urlpatterns = [ .... url(r'^del_press/', views.del_press), #删除 url(r'^edit_press/', views.edit_press), #编辑 ] views.py #删除出版社处理函数 def del_press(request): # 1,获取要删除的出版社ID del_id = request.GET.get('id') print(del_id) # 2,根据ID去数据库删除对应的数据行 Press.objects.filter(id=del_id).delete() # 3,让用户在去访问以下出版社列表页 return redirect('/press/') #编辑出版社 def edit_press(request): if request.method == 'POST': # 用户修改完出版社给我发过来了 # 1,取出用户编辑后的数据 edit_id = request.POST.get('id') new_name = request.POST.get('name') # 2,去数据库修改对应的数据 # 2.1 先找对应的数据 edit_press_obj = Press.objects.get(id=edit_id) # 2.2 修改出版社的名称 edit_press_obj.name = new_name # 2.3将修改同步到数据库 edit_press_obj.save() # 3,让用户再去访问出版社列表页 return redirect('/press/') # 1,获取要编辑的出版社id edit_id = request.GET.get('id') # 2,获取该出版社的信息 # ret = Press.objects.filter(id=edit_id)[0] # print(ret) ret = Press.objects.get(id=edit_id) # 3,在页面上展示出来 return render(request,'edit_press.html',{'press_obj':ret}) edit_press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>编辑出版社</title> </head> <body> <h1>编辑出版社</h1> <form action="/edit_press/" method="post"> <input type="text" name="id" value="{{ press_obj.id }}" style="display: none;"> <input type="text" name="name" value="{{ press_obj.name }}"> <input type="submit"> </form> </body> </html> press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>出版社</title> </head> <body> <h1>出版社列表</h1> <a href="/add_press/">添加出版社</a> <table border="1"> <thead> <tr> <th>序号</th> <th>数据库id</th> <th>名称</th> <th>操作</th> </tr> </thead> <tbody> {% for i in ret %} <tr> <td>{{ forloop.counter }}</td> <td>{{ i.id }}</td> <td>{{ i.name }}</td> <td><a href="/del_press/?id={{ i.id }}">删除</a></td> <td><a href="/edit_press/?id={{ i.id }}">编辑</a></td> </tr> {% endfor %} </tbody> </table> </body> </html> 编辑方法二: views.py #编辑出版社 def edit_press(request): # 1,获取要编辑的出版社id edit_id = request.GET.get('id') if request.method == 'POST': # 用户修改完出版社给我发过来了 # 1,取出用户编辑后的数据 new_name = request.POST.get('name') # 2,去数据库修改对应的数据 # 2.1 先找对应的数据 edit_press_obj = Press.objects.get(id=edit_id) # 2.2 修改出版社的名称 edit_press_obj.name = new_name # 2.3将修改同步到数据库 edit_press_obj.save() # 3,让用户再去访问出版社列表页 return redirect('/press/') # 2,获取该出版社的信息 # ret = Press.objects.filter(id=edit_id)[0] # print(ret) ret = Press.objects.get(id=edit_id) # 3,在页面上展示出来 return render(request,'edit_press.html',{'press_obj':ret}) edit_press.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>编辑出版社</title> </head> <body> <h1>编辑出版社</h1> <form action="/edit_press/?id={{ press_obj.id }}" method="post"> <input type="text" name="id" value="{{ press_obj.id }}" style="display: none;"> <input type="text" name="name" value="{{ press_obj.name }}"> <input type="submit"> </form> </body> </html>

浙公网安备 33010602011771号