day61 django内容回顾: 1. 下载: pip install django==1.11.14 pip install -i 源 django==1.11.14 pycharm 2. 创建项目 命令行: djang-admin startproject 项目名 pycharm file ——》 new project ——》 选django 填项目名称 选解释器 app01 3. 启动项目: 命令行: python manage.py runserver pycharm 配置修改 点绿三角 4. django的配置 settings.py 1. templates 模板 路径 2. 注释csrf中间件 3. 静态文件 STATIC_URL = '/static/' # 别名 STATICFILES_DIRS=[] #静态文件的路径 4. 数据库的配置 5. APP 创建APP: 命令行: python manage.py startapp app01 pycharm tools ——》run manage.py task ——》 startapp app01 注册APP: 在settings.py中的INSTALLED_APPS添加: 'app01' 或者 'app01.apps.App01Config', 6. views.py 写你的函数 业务逻辑 默认参数 request 请求相关内容 request: request.method 请求方法 GET/POST request.POST post请求提交的数据 字典 request.GET GET请求URL上携带的参数 基础必备三件套: from django.shorcuts import HttpResponse,render,redirect HttpResponse('返回的字符串') ——》 页面显示的内容 render(request,'HTML文件名') ——》返回一个HTML文件 redirect('跳转的URL') ——》告诉浏览器向另一个URL发请求 7. ORM 1. 对象和关系型数据的映射 通过操作对象的方式来操作数据库 2. 映射关系: 类 ——》 数据表 对象 ——》数据行 属性 ——》 字段 3. ORM功能: 操作数据表 操作数据行 4. mysql数据库: 1. 创建mysql数据库 2. 配置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 引擎 'NAME': 'day60', # 数据库名字 'HOST': '127.0.0.1', # host地址 'PORT': 3306, # 端口号 'USER': 'root', # 用户名 'PASSWORD': '', # 密码 } } 3. 告诉django使用pymysql来连数据库: 在项目同名的文件下的__init__.py中写下面的代码: import pymysql pymysql.install_as_MySQLdb() 4. 在app01/models.py中写类(继承models.Model): class Userinfo(models.Model): user = models.CharField(max_length=32) pwd = models.CharField(max_length=32) 5. 执行两条数据库迁移的命令: python manage.py makemigrations ——》 models变更情况记录到APP下的migrations文件夹下 python manage.py migrate ——》把所有的变更更新到数据库中 6. ORM操作: from app01 import models # 查询所有的对象 models.Userinfo.objects.all() # 获取一个对象。如果查不到或者查到多个就会报错。 models.Userinfo.objects.get(user='alex',pwd='alexdsb') # 创建一个对象 models.Userinfo.objects.create(user='alex',pwd='alexdsb') 8. form表单 1. method='post' action='' 提交方式 提交地址 2. input标签都有name属性 3. 一个type='submit' 的按钮或者input标签 (bootstrap的button按钮默认有提交事件) 今日内容: 1.单表的增删改查
django简单的出版社网站展示,添加,删除,编辑
展示函数和html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>出版社列表</title> <style> html{ user-select: none; } </style> </head> <body> <table border="1" style="border-collapse: collapse;" cellpadding="5" bgcolor="#f0f8ff"> <thead> <tr> <th>序号</th> <th>ID</th> <th>名称</th> <th colspan="2">操作</th> </tr> </thead> <tbody> {% for publisher in publishers %} <tr> <td>{{forloop.counter}}</td> <td>{{ publisher.id }}</td> <td>{{ publisher.name }}</td> <td> <a href="/del_publisher/?id={{ publisher.id }}"> <button>删除</button> </a> </td> <td> <a href="/edit_publisher/?id={{ publisher.id }}"> <button>编辑</button> </a> </td> </tr> {% endfor %} </tbody> </table> <a href="/add_publisher/">添加一个出版社</a> <p style="color: red">{{ err_msg }}</p> </body> </html>
def publisher_list(request): publishers = models.publisher.objects.all().order_by('id') return render(request,'publisher_list.html', {'publishers': publishers})
添加:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加出版社</title> </head> <body> <h1>添加出版社</h1> <form action="" method="post"> <input type="text" name="name"> <p style="color: red;">{{ err_msg }}</p> <button>提交</button> </form> </body> </html>
def add_publisher(request): err_msg = '' if request.method == "POST": new_name = request.POST.get('name') if new_name: name = models.publisher.objects.filter(name=new_name) if not name: models.publisher.objects.create(name=new_name) return redirect('/publisher/') else: err_msg = '数据已存在!' else: err_msg = '数据为空!' return render(request, 'add_publisher.html', {"err_msg": err_msg})
删除:
def del_publisher(request): err_msg = '' del_id = request.GET.get('id') del_obj_list = models.publisher.objects.filter(id=del_id) if del_obj_list: del_obj_list.delete() return redirect('/publisher/') else: err_msg = '您要删除的数据不存在!' return render(request, 'publisher_list.html', {"err_msg": err_msg})
编辑:
def edit_publisher(request): err_msg = '' edit_id = request.GET.get('id') edit_obj_list = models.publisher.objects.filter(id=edit_id) if request.method=='POST': new_name = request.POST.get('name') edit_name_list = models.publisher.objects.filter(name=new_name) if not edit_name_list and edit_obj_list and new_name: edit_obj_list[0].name = new_name edit_obj_list[0].save() return redirect('/publisher/') elif not edit_obj_list: err_msg = '您要修改的数据不存在!' elif not new_name: err_msg = '修改后名字不能为空' else: err_msg = '数据库已存在该名称' return render(request, 'edit_publisher.html', {"err_msg": err_msg})
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>编辑出版社</title> </head> <body> <h1>编辑出版社</h1> <form action="" method="post"> <input type="text" name="name"> <p style="color: red;">{{ err_msg }}</p> <button>提交</button> </form> </body> </html>