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)
相关推荐
李晨卓38 分钟前
python学习之不同储存方式的操作方法
python·代码规范
站大爷IP40 分钟前
实战:爬取某联招聘职位需求并生成词云——从零开始的完整指南
python
deephub43 分钟前
从零开始:用Python和Gemini 3四步搭建你自己的AI Agent
人工智能·python·大语言模型·agent
咕白m6251 小时前
Python 实现 PDF 页面旋转
python
c***87192 小时前
Flask:后端框架使用
后端·python·flask
Q_Q5110082853 小时前
python+django/flask的情绪宣泄系统
spring boot·python·pycharm·django·flask·node.js·php
撸码猿3 小时前
《Python AI入门》第9章 让机器读懂文字——NLP基础与情感分析实战
人工智能·python·自然语言处理
二川bro3 小时前
多模态AI开发:Python实现跨模态学习
人工智能·python·学习
2301_764441333 小时前
Python构建输入法应用
开发语言·python·算法
love530love3 小时前
【笔记】ComfUI RIFEInterpolation 节点缺失问题(cupy CUDA 安装)解决方案
人工智能·windows·笔记·python·插件·comfyui