当前位置: 首页 > news >正文

Django快速上手

1. 安装Django

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

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==3.2.20

2. 创建项目

  1. 创建项目

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

      django-admin startproject django01
      
  2. 创建app

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

      python manage.py startapp app01
      
  3. 注册app

    1. 查看 app01 --> apps.py

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

      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的路径

      from django.contrib import admin
      from django.urls import pathfrom app01 import viewsurlpatterns = [# path('admin/', admin.site.urls),path('index/', views.index),
      ]
      
    2. 在 app01 --> views.py中创建函数 index

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

    1. 方法一:命令行启动

      python manage.py runserver
      
    2. 方法二:pycharm启动

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

3. orm操作MySQL

  1. 安装mysqlclient

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

    在django01 --> settings.py 中配置

    # 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)

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

        python manage.py makemigrations
        python manage.py migrate
        
    2. 修改表

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

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

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

      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自动创建表时,如果是外键,在对象中需要做特殊处理

      """
      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约束

      """
      1. verbose_name: 字段的备注
      2. SmallIntegerField: 对应数据表的tinyint
      3. 配置choices后,数据表存储的值是1 和 2
      """
      gender_choices = ((1, "男"),(2, "女"),
      )
      gennder = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)
      
http://www.lryc.cn/news/116789.html

相关文章:

  • Android, 笔记+课表的app实现
  • Openlayers实战:多数据分散聚合
  • 9、Kubernetes核心技术 - Volume
  • HTML <small> 标签
  • 网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块
  • React实现关键字高亮
  • react-media如何使用
  • 多进程利用TCP进行信息群发功能
  • git 报错 protocol ‘https‘ is not supported解决
  • 启动RocketMQ报错
  • 【Spring Boot系列】-Spring Boot过滤器Filter
  • Leetcode-每日一题【剑指 Offer 14- I. 剪绳子】
  • 【图论】单源最短路问题
  • 物理层扩展以太网
  • Llama 2 with langchain项目详解(一)
  • IDEA全局设置MyBatis中写SQL语句提示
  • Linux 内存管理
  • oracle怎样给某个普通用户授予杀自己用户会话的权限
  • redis的主从复制,哨兵和cluster集群
  • Crowd-Robot Interaction 论文阅读
  • 什么是LIMS系统,LIMS实验室管理系统
  • Python Opencv实践 - 图像属性相关
  • PCB制造中铜厚度的重要性
  • 浅谈高校宿舍水电表远程智能管理的研究与应用
  • 无货源跨境电商购物平台快速搭建(微商城、小程序、APP、网站)
  • 力扣:57. 插入区间(Python3)
  • List和数组互转方法以及踩坑点
  • css3背景渐变
  • windows 安装免费3用户ccproxy ubuntu 代理上网
  • B树的插入与删除过程