django内容回顾:
- 
下载安装 - 
命令行 pip install django==1.11.26 -i 源 
- 
pycharm 
 
- 
- 
创建项目 - 
命令行 django-admin startproject 项目名 
- 
pycharm file ——》 new project ——》 django ——》 输入项目路径 ——》 选择解释器 ——》 输入一个app的名称 ——》 create 
 
- 
- 
启动项目 - 
命令行 cd 项目的根目录 python manage.py runserver # 127.0.0.1:8000 python manage.py runserver 80 # 127.0.0.1:80 python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80 
- 
pycharm 点绿三角 (没有右键启动) 
 
- 
- 
settings的配置 中间件中注释 csrf的中间件 可以提交POST请求 静态文件的配置: STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] DATABASES 数据库 INSTALLED_APPS = [] TEMPLATES 模板 DIRS = [os.path.join(BASE_DIR,'templates')] 
- 
APP 创建APP python manage.py startapp app名 注册APP INSTALLED_APPS = [ 'app名' 或者 'app名.apps.类' # 'app01.apps.App01Config', ] 
- 
urls.py from app01 import views
 
 urlpatterns = [
 
 url(r'^publisher/',views.publisher),
 url(r'^add_publisher/',views.add_publisher),
 url(r'^del_publisher/',views.del_publisher),
 url(r'^edit_publisher/',views.edit_publisher),
 ]
- 
views.py from django.shotcuts import HttpResponse,render,redirect
 
 def publisher(request):
 # 业务逻辑
 # 返回响应
 # HttpResponse('字符串') # 返回的是字符串
 # render(request,'模板的名字',{'k1':v1}) # 返回的一个页面
 # redirect('路径') # 重定向
 
- 
模板语法 render(request,'pub.html',{'all_publishers':all_publishers})
 {{ all_publishers }}
 
 {% for i in all_publishers %}
 
 {{ forloop.counter }}
 {{ i }}
 {{ i.id }} {{ i.pk }}
 {{ i.name }}
 
 {% endfor %}
 
 
- 
form的注意点: - 
form标签的属性 action='提交的地址' method='post' novalidate 取消input标签自带的校验 
- 
input标签必须要有name属性 有些标签有value值 
- 
需要有一个button按钮 或者 type='submit'的input 
 
- 
- 
get 和 post get : 获取一个页面 途径: 1. 直接在浏览器的地址栏中输入地址 回车- 
form表单 不指定method 
- 
a标签 
 参数: ?k1=v1&k2=v2 获取参数: request.GET.get('k1') post : 提交数据 途径: 1. form表单 method = 'post'获取数据: request.POST.get('k1') 
- 
- 
Django使用MySQL数据库的流程: - 
手动创建一个MySQL数据库 
- 
配置数据库 ENGINE MySQL
 NAME 数据库的名字
 HOST ip
 PORT 3306
 USER 用户名
 PASSWORD 密码
- 
在与settings同级目录下的 __init__.py中写代码:import pymysql
 pymysql.install_as_MySQLdb()
- 
写models: form django.db import models
 class Publisher(models.Model):
 name = models.CharField(max_length=32)
 
- 
执行迁移的命令 python manage.py makemigrations # 检查已经注册的APP下面的models.py的变更情况
 python manage.py migrate # 执行迁移
- 
ORM 对象关系映射 对应关系: 类 _> 表 对象 _> 数据行(记录) 属性 _> 字段 ORM能做的事情: - 
对数据做修改 
- 
对表做修改 
 from app01 import models
 
 # 查询
 models.Publisher.objects.all() # 查询所有的数据 QuerySet 对象列表
 models.Publisher.objects.get(name='xxx') # 查询一条数据 只能查有且唯一的数据
 models.Publisher.objects.filter(name='xxx') # 查询所有满足条件的数据 对象列表
 
 # 新增
 obj = models.Publisher.objects.create(name='xxxx')
 
 obj = models.Publisher(name='xxxx')
 obj.save() # 保存到数据库
 
 # 删除
 models.Publisher.objects.filter(pk=pk).delete() # 批量删除
 models.Publisher.objects.get(pk=pk).delete() # 单条数据的删除
 
 
 # 更新
 models.Publisher.objects.filter(pk=pk).update(name='xx') # 批量更新
 
 obj = models.Publisher.objects.get(pk=pk)
 obj.name = 'xxxx'
 obj.save() # 保存到数据库
- 
 外键 一对多的关系 
 class Book(models.Model):
 name = models.CharField(max_length=32)
 pub = models.ForeignKey('Publisher', on_delete=models.CASCADE)
 
 
 """
 on_delete 在2.0版本之后是必填的
 on_delete=
 models.CASCADE 级联删除
 PROTECT 保护
 SET(1)
 SET_DEFAULT 设置为默认值设置为某一个值
 SET_NULL 设置为空
 DO_NOTHING 什么都不变
 """
 查询 all_books = models.Book.objects.all()
 
 for book in all_books:
 print(book)
 print(book.id)
 print(book.pk)
 print(book.name)
 print(book.pub) # 所关联的出版社对象 对象.外键
 print(book.pub_id) # 所关联的出版社对象的id 对象.外键_id新增 models.Book.objects.create(name=book_name,pub=models.Publisher.objects.get(pk=pub_id))
 obj = models.Book.objects.create(name=book_name, pub_id=pub_id)编辑 book_obj.name = book_name
 book_obj.pub_id = pub_id
 # book_obj.pub = 出版社的对象
 book_obj.save()
 models.Book.objects.filter(pk=pk).update(name=book_name,pub_id=pub_id)
- 
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号