Django快速上手

1. 安装Django

Django 4.x的版本只支持MySQL8及以上的版本了。如果mysql版本比较老,需要使用老版本的django。此处指定django版本为3.2.20

shell 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==3.2.20

2. 创建项目

  1. 创建项目

    1. 在指定目录使用命令行创建项目 django01

      shell 复制代码
      django-admin startproject django01
  2. 创建app

    1. 在项目内manage.py的同级目录使用命令行创建 app01

      shell 复制代码
      python manage.py startapp app01
  3. 注册app

    1. 查看 app01 --> apps.py

      python 复制代码
      from django.apps import AppConfig
      
      
      class App01Config(AppConfig):
          default_auto_field = 'django.db.models.BigAutoField'
          name = 'app01'
    2. 在 django01 --> settings.py 的INSTALLED_APPS中注册app,增加app01

      python 复制代码
      INSTALLED_APPS = [
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
          'app01.apps.App01Config'	# 对应app01的路径
      ]
  4. 编写url和视图函数的映射关系(路由)

    1. 在django01 --> urls.py 中新增path,对应到app01 views.py的路径

      python 复制代码
      from django.contrib import admin
      from django.urls import path
      
      from app01 import views
      
      urlpatterns = [
          # path('admin/', admin.site.urls),
      
          path('index/', views.index),
      ]
    2. 在 app01 --> views.py中创建函数 index

      python 复制代码
      from django.http import HttpResponse
      from django.shortcuts import render
      
      # Create your views here.
      
      def index(request):
          return HttpResponse("HelloWorld")
  5. 启动项目

    1. 方法一:命令行启动

      shell 复制代码
      python manage.py runserver
    2. 方法二:pycharm启动

  6. web访问测试 http://localhost:8000/index/

3. orm操作MySQL

  1. 安装mysqlclient

    shell 复制代码
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mysqlclient
  2. 连接数据库

    在django01 --> settings.py 中配置

    python 复制代码
    # Database
    # https://docs.djangoproject.com/en/4.2/ref/settings/#databases
    
    # DATABASES = {
    #     'default': {
    #         'ENGINE': 'django.db.backends.sqlite3',
    #         'NAME': BASE_DIR / 'db.sqlite3',
    #     }
    # }
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
            'NAME': 'gotest',   # 库名
            'USER': 'root',
            'PASSWORD': 'uGS7jx9sYU7nt0c',
            'HOST': '192.168.7.228',
            'PORT': 3306,
        }
    }
  3. 操作表

    1. 创建表

      • 在app01 --> models.py 中创建类 UserInfo (建表的时候表名为app01_userinfo, 会自动添加主键id)

        python 复制代码
        from django.db import models
        
        class UserInfo(models.Model):
            name = models.CharField(max_length=32)
            password = models.CharField(max_length=64)
            age = models.IntegerField()
      • manage.py 同级目录执行命令建表

        shell 复制代码
        python manage.py makemigrations
        python manage.py migrate
    2. 修改表

      • 删除列:将对象内的字段注释或者删掉,然后执行建表命令

      • 新增列:由于已存在的列中可能有数据,所以新增列必须执行对应的数据。然后再执行建表命令

        python 复制代码
        # 列默认值为2
        data1 = models.IntegerField(default=2)
        # 默认值为空
        data2 = models.IntegerField(null=True, blank=True)
    3. CURD

      python 复制代码
      form app01 import models
      
      # 新增
      models.UserInfo.objects.create(name="小赵", password="123", age=20)
      models.UserInfo.objects.create(name="小钱", password="123", age=20)
      models.UserInfo.objects.create(name="小孙", password="123", age=20)
      
      # 删除
      models.UserInfo.objects.filter(id=3).delete()
      
      # 查询
      # 查所有
      # data_list 是QuerySet类型
      data_list = models.UserInfo.objects.all()
      for obj in data_list:
          print(f"{obj.name}, {obj.password}, {obj.age}")
      
      # 查一行
      obj = models.UserInfo.objects.filter(id=1).first()
      print(obj.id)
      
      # 改
      models.UserInfo.objects.filter(id=1).update(password="999")
    4. 外键

      使用django自动创建表时,如果是外键,在对象中需要做特殊处理

      python 复制代码
      """
      1. to 表示与哪张表关联
      2. to_field 表示关联的字段
      3. 返回参数是depart,创建表时,外键字段会定义为depart_id
      4. 需要配置on_delete属性:当另一张表被删除时,对应有两种处理(级联删除、置空)
      """
      # 级联删除
      depart = models.ForeignKey(to="Department", to_fields="id", on_delete=models.CASCADE)
      # 置空
      # depart = models.ForeignKey(to="Department", to_fields="id", null=True, blank=True, on_delete=models.SET_NULL)
    5. choices约束

      python 复制代码
      """
      1. verbose_name: 字段的备注
      2. SmallIntegerField: 对应数据表的tinyint
      3. 配置choices后,数据表存储的值是1 和 2
      """
      gender_choices = (
          (1, "男"),
          (2, "女"),
      )
      gennder = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)
相关推荐
Kai HVZ3 分钟前
python爬虫----爬取视频实战
爬虫·python·音视频
古希腊掌管学习的神5 分钟前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
m0_748244838 分钟前
StarRocks 排查单副本表
大数据·数据库·python
B站计算机毕业设计超人15 分钟前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
路人甲ing..18 分钟前
jupyter切换内核方法配置问题总结
chrome·python·jupyter
游客52029 分钟前
opencv中的常用的100个API
图像处理·人工智能·python·opencv·计算机视觉
每天都要学信号1 小时前
Python(第一天)
开发语言·python
凡人的AI工具箱1 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
咸鱼桨1 小时前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派
yusaisai大鱼2 小时前
tensorflow_probability与tensorflow版本依赖关系
人工智能·python·tensorflow