Forty-six Django+orm
纠错:名称空间内,下面的django1改为2
1、URL 反向解析
# URL 原理:只要name不变,那么前面的路径怎么变,都不会影响到功能 path('login/', views.login, name='login') # views from django.urls import revers url = reverse('login') # 模板中 {% url 'login' %} # 好处:便于拓展,当你的url发生改变时,通过反向解析 直接能获取最新的URL,不用自己手动修改
2、名称空间
# 背景:多个app时,下面有同名的name时,可以通过指定名称空间。 # 来定位到具体URL # django1 与 django2 的区别: # django1: url('^app01/', include('app01.urls', namespace='app01')) # django2 path('app01/', include('appo1.urls, 'app01'))
# views url = reverse('app01:login') # login是app01下的 # 模板中 {% url 'app01:login' %}
3、ORM 对象关系映射
优点:
1、写python 代码,实现对数据表的相关操作。提高开发效率
2、平滑切换数据库
缺点:
1、python代码,转化SQL需要时间,效率相对会有影响
2、SQL 能力下降
django如何使用mysql 数据库:
1、手动创建数据库 create database 库名 default charset=utf8; 2、setting 再配置 DATABASES={ 'default':{ 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1' # 数据库所在ip 'PORT': 3306, 'NAME': '数据库名' 'USER': '用户名', 'PASSWORD' : '' # 密码 } } 3、配置init(settings同级) import pymysql pymysql.install_as_MySQLdb() 4、在models 里定义模型类 from django.db import models class Book(models.Model): titile = models.CharFirld(max_length=32) ... 5、命令行输入命令 python manage.py makemigrations # 记录models变更记录 python manage.py migrate # 将数据同步到数据库 # 且会自动同步创建一个 migrations 目录及文件
4、表单操作
# 新增 # 方式一: book = models.Book(title='xxx', price=...) book.save() # 同步到数据库 # 方式二(objects 管理对象): models.Book.objects.create(title='xxx', price=...) # 也有返回值 # 查询 # QuerySet 类似列表 all 返回所有数据 对象 filter 返回过滤满足条件的 对象列表 order_by 默认是升序,降序- values 类似与字典 reverse 反转 distinct 去重 values_list 类似元组 exclude 跟filter 相反 # 返回对象 get 方法(多个结果和没有结果会报错,有且只能有一个才行) first 方法 获取最开始的一个 last 方法 获取最后一个 # 返回数据类型 exists 返回值布尔值 count 返回int计数


浙公网安备 33010602011771号