###连接数据库(在setting中)1
2
3
4
5
6
7
8
9
10DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dj7',
'USER': 'root',
'PASSWORD': '123456', # 本地mysql的密码
'HOST': '127.0.0.1',
'PORT': 3306
}
}
###创建表(在models中)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16from django.db import models
class Student(models.Model):
name = models.CharField(max_length=10, unique=True)
age = models.IntegerField(default=18)
gender = models.BooleanField(default=1)
# auto_now_add: 创建数据时,默认create_time字段为当前时间
create_time = models.DateTimeField(auto_now_add=True, null=True)
# auto_now:修改时间,每次update学生信息时,修改该字段的时间为当前时间
operate_time = models.DateTimeField(auto_now=True, null=True)
class Meta:
# 指定student模型映射到数据库中对应的表名
db_table = 'student'
建立路由(在urls中)
1 | from app import views |
在视图中应用(views)
1 | from django.shortcuts import render |
进入虚拟环境
- env/djenv6/Scripts/activate
- 将代码放到code文件中,从虚拟环境中,进入code文件夹
- 退出虚拟环境 ——- deactivate
启动一个脚本文件:
- 第一步:
- add Configurations —- 修改
- Name 修改名字
- Script path 配置虚拟环境
- Parameters 改成 runserver [ip:][8080]
- add Configurations —- 修改
- 第二步:
- 引入Django模块
- 修改settings中的DATABASE的数据
![img]
在model中创建表格模型
1.在settings中的INSTALLED_APPS中添加app
2.执行python manage.py startapp app
3.执行python manage.py makemiigrations
- Provide a one-off default now (will be set on all existing rows) ——— 缺少一个默认值
4.再执行python manage.py migrate —- 迁移表格
5.如果报错,查看Django_migrations的表格的最后一行
表格中的操作
添加表格的列(定义字段)都写在models.py中创建的模型(类)中,定义字段,就表示定义这个类的对象的属性,然后执行上面的第三、四步骤就创建好了
创建表格中的数据:
1.url路由
- 在urls.py —-> urlpatterns中添加一个url(正则表达式,调用views中的方法)
- 运行程序,查看调用方法生成的ip地址,在数据库中就创建好了数据
2.运行程序
查看调用方法生成的ip地址,在数据库中就创建好了数据
创建表格中的数据(2)
def create_stu(request):
Student.objects.create(s_name='小明')
return HttpResponse('创建成功')
(查)查询数据 :
准确查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16def sel_stu(request):
# 实现查询
# 查询所有的数据
stus = Student.objects.all()
# filter() 过滤
stus = Student.objects.filter(s_name='小明')
# first()获取第一个
# last()获取最后一个
stus = Student.objects.filter(s_age=20).first()
# get拿不到值和拿到多个值都会报错,filter不会报错,会取到空值
stus = Student.objects.get(s_age=20)
# 查询多个条件
stus = Student.objects.filter(s_age=20).filter(s_gender=1)
stus = Student.objects.filter(s_age=20, s_gender=1)
print(stu_names)
return HttpResponse('查询成功')模糊查询
1
2
3
4
5
6
7
8
9
10
11def sel_stu(request):
# 模糊查询 like '%xxx%' '_xx'
# 名字中含有'吴'字
stus = Student.objects.filter(s_name__contains='吴')
# 以小开头
stus = Student.objects.filter(s_name__startswith='小')
# 以小字结尾
stus = Student.objects.filter(s_name__endswith='小')
stu_names = [stu.s_name for stu in stus]
print(stu_names)
return HttpResponse('查询成功')其它查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30def sel_stu(request):
# 大于 gt/gte 小于 lt/lte
stus = Student.objects.filter(s_age__gt=18)
stus = Student.objects.filter(s_age__lt=18)
stus = Student.objects.filter(s_age__gte=18)
# 排序 order_by()
# 升序
stus = Student.objects.order_by('id')
# 降序
stus = Student.objects.order_by('-id')
# 查询部满足条件的数据
stus = Student.objects.exclude(s_age=20)
# 计数方法count(),len()
print(len(stus))
stus_count = stus.count()
print(stus_count)
# values()
stus_values = stus.values()
# id=pk
stus = Student.objects.filter(id=2)
stus = Student.objects.filter(pk=2)
stu_names = [stu.s_name for stu in stus]
print(stu_names)
return HttpResponse('查询成功')