04 创建数据库和表
- 后端开发离不开数据库
- 创建数据库(会在项目根目录下面生成一个配置文件中指定的数据库文件db.sqlite3,并且生成一些django所需要的默认的表):python manage.py migrate
- 为什么执行python manage.py migrate会生成一些默认的表?因为django项目默认会安装一些APP(在setting.py文件中的INSTALLED_APPS),如果这些APP中有类似models.py的文件,有migrations这样的目录,这些都是跟数据库相关的文件和目录。
- 什么是ORM
- django中对数据的增删改查,基本都是通过Model(django.db.models.Model)类型的对象进行的
- 数据库表-------------------------------继承自models.Model的类
- 表中的字段----------------------------类中的属性
- 数据的增删改查----------------------类的方法
- 简化了我们应用中的数据库开发,无需使用sql语句操作数据库,提供了开发效率,屏蔽了不同的数据库访问的底层细节,如果要换数据库,几乎不需要改代码,修改几个配置项就可以了
- ORM:对象关系映射(通过对象操作数据库的方法)
- 定义我们的数据库表
- 创建一个common应用目录,存放我们项目需要的一些公共的表的定义:python manage.py startapp common
- django中有很多字段对象类型,对应不同类型的数据库字段,可以参考https://docs.djangoproject.com/en/2.0/ref/models/fields/#model-field-types
-
1 # common.models.py 2 3 from django.db import models 4 5 6 class Customer(models.Model): 7 # 客户名称 8 name = models.CharField(max_length=200) 9 10 # 联系电话 11 phonenumber = models.CharField(max_length=200) 12 13 # 地址 14 address = models.CharField(max_length=200)
-
1 # bysms.settings.py 2 3 # Application definition 4 5 INSTALLED_APPS = [ 6 'django.contrib.admin', 7 'django.contrib.auth', 8 'django.contrib.contenttypes', 9 'django.contrib.sessions', 10 'django.contrib.messages', 11 'django.contrib.staticfiles', 12 'common.apps.CommonConfig', 13 ]
-
apps.py相当于common应用的配置文件
-
'common.apps.CommonConfig'相当于告诉django,CommonConfig是common的配置类
- 定义新增应用的路径:name = 'common'
-
# common.apps from django.apps import AppConfig class CommonConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'common'
- python manage.py makemigrations common:告诉django去看看common这个应用下的models.py,我们已经修改了数据定义,你现在去产生响应的脚本
-
![image]()
-
1 # Generated by Django 5.2.7 on 2025-12-04 14:33 2 3 # common.migrations.0001_initial.py 4 from django.db import migrations, models 5 6 7 class Migration(migrations.Migration): 8 9 initial = True 10 11 dependencies = [ 12 ] 13 14 operations = [ 15 migrations.CreateModel( 16 name='Customer', 17 fields=[ 18 ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 ('name', models.CharField(max_length=200)), 20 ('phonenumber', models.CharField(max_length=200)), 21 ('address', models.CharField(max_length=200)), 22 ], 23 ), 24 ]
- 提交到数据库:python manage.py migrate,数据库中多了一个common_customer表
- django admin管理数据
- 创建超级管理员账号:python manage.py createsuperuser
- django内置了一个管理员可以登录的页面:http://127.0.0.1/admin/
- 用户名:byhy,密码:lzp123456
- 如果想要自己创建的表,比如common_customer,在修改应用里面的 管理员 配置文件 common/admin.py,注册我们定义的model类
-
-
1 # common.admin.py 2 3 from django.contrib import admin 4 5 from .models import Customer 6 7 admin.site.register(Customer)
-


浙公网安备 33010602011771号