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)
posted @ 2025-12-04 08:40  理想赵雷  阅读(3)  评论(0)    收藏  举报