文章目录
参考资料
B站网课:点击蓝色字体跳转
或者复制链接至浏览器访问:https://www.bilibili.com/video/BV1vK4y1o7jH?p=16&vd_source=597e21cf34ffcdce468ba00be2177e8a
ORM-基础字段及选项
添加字段之后要记得进行迁移,变化才能同步至数据库
python3 manage.py makemigrations
python3 manage.py migrate
字段类型
练习——添加模型类
应用bookstore下的models.py
class Author(models.Model):
name = models.CharField('姓名',max_length=11,default='')
age = models.IntegerField('年龄')
email = models.EmailField('邮箱')
数据库迁移——同步至mysql
python3 manage.py makemigrations
python3 manage.py migrate
mysql中查看
进入mysql:
mysql -u root -p
输入密码:123456
use mysite3;
show tables;
desc bookstore_author;
效果
字段选项
null尽量不要使用
修改过字段选项【添加或更改】均要执行makemigrations和migrate
python3 manage.py makemigrations
python3 manage.py migrate
Meta类
定义
示例:改表名
更改表名
应用bookstore下的models.py
class Book(models.Model):
title = models.CharField('书名',max_length=50,default='')
price = models.DecimalField('价格',max_digits=7,
decimal_places=2,default=0.0)
class Meta:
db_table='book'
添加内容:
class Meta:
db_table='book'
终端
数据库的迁移
python3 manage.py makemigrations
python3 manage.py migrate
效果
修改表名前:
修改表名后:
练习——改表名+字段选项修改
应用bookstore下的models.py
from django.db import models
# Create your models here.
class Book(models.Model):
title = models.CharField('书名',max_length=50,default='',unique=True)
pub = models.CharField('出版社',max_length=100,default='')
price = models.DecimalField('价格',max_digits=7,
decimal_places=2,default=0.0)
market_price = models.DecimalField('价格', max_digits=7,
decimal_places=2, default=0.0)
class Meta:
db_table='book'
class Author(models.Model):
name = models.CharField('姓名',max_length=11,default='')
age = models.IntegerField('年龄',default=1)
email = models.EmailField('邮箱',null=True)
class Meta:
db_table='author'
终端
数据库的迁移
python3 manage.py makemigrations
python3 manage.py migrate
效果
ORM基本操作
常见问题汇总
推荐选择2:修改models.py
基础概念
创建数据
方案2较麻烦,更推荐方案1
引入新工具——Django Shell
代码发生变化后要重启Django Shell
示例
方案1
Shell
python3 manage.py shell
from bookstore.models import Book
b1 = Book.objects.create(title='python',pub='清华大学出版社',price=20,market_price=25)
效果(在mysql中查看)
方案2
Shell
python3 manage.py shell
from bookstore.models import Book
b2 = Book(title='Django',pub='清华大学出版社',price=70,market_price=75)
b2.save()
效果
练习——插入数据
Shell(终端)
Book:
from bookstore.models import Book
b3 = Book.objects.create(title='JQuery',pub='机械工业出版社',price=90,market_price=85)
b4 = Book.objects.create(title='Linux',pub='机械工业出版社',price=80,market_price=65)
b5 = Book.objects.create(title='HTML5',pub='清华大学出版社',price=105,market_price=90)
Author:
from bookstore.models import Author
b1 = Author.objects.create(name='王老师',age='28',email='wangweichao@tedu.cn')
b2 = Author.objects.create(name='吕老师',age='31',email='lvze@tedu.cn')
b3 = Author.objects.create(name='祁老师',age='30',email='qitx@tedu.cn')
效果(mysql中查看)
查询数据
查询简介
all()方法
示例
a1=Book.objects.all()
a1
for book in a1:
... print(book.title)
...
注意:print 要有缩进
可定义QuerySet中的输出格式
在models.py中修改
改完要重启Shell
输入exit()可以退出Shell
数据库的迁移:
python3 manage.py makemigrations
python3 manage.py migrate
效果:
values()方法
按字段取数据
>>> a1 = Book.objects.values('title','pub')
>>> a1
values.list()方法
order_by()
可以进行各种组合
通过query可以查看对应的SQL语句
练习——查看所有书籍的页面
bookstore/views.py
def all_book(request):
all_book = Book.objects.all()
return render(request,'bookstore/all_book.html',locals())
分布式路由
urls.py
path('bookstore/',include('bookstore.urls'))
bookstore/urls.py
path('all_book',views.all_book)
bookstore/templates/bookstore/all_book.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>查看所有书籍</title>
</head>
<body>
<table border="1">
<tr>
<th>id</th>
<th>title</th>
<th>pub</th>
<th>price</th>
<th>market_price</th>
<th>op</th>
</tr>
{% for book in all_book %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.pub }}</td>
<td>{{ book.price }}</td>
<td>{{ book.market_price }}</td>
<td>
<a href="">更新</a>
<a href="">删除</a>
</td>
</tr>
{% endfor %}
</table>
</body>
</html>
终端
python3 manage.py runserver
效果
filter(条件)
(持续更新中)