首页 > 其他分享 >Django开发--知识回顾

Django开发--知识回顾

时间:2023-10-30 12:11:51浏览次数:26  
标签:verbose 回顾 -- py Django models choices id name

  • 安装Django
pip install django
  • 创建Django项目
django-admin startproject mysite

  注意:pycharm也可以创建Django项目

  如果用pycharm创建,记得settings.py中的DIR里的信息删除

  •  创建APP
python manage.py startapp app01
python manage.py startapp app02
python manage.py startapp app03
  • 注册APP
INSTALLED_APPS = [
 ...
    'app01',
]

  注意:一定要注册APP,否则APP下的models.py写类时,无法在数据库中创建表。

  • 配置静态文件路径&模板的路径(放在APP目录下)
  • 配置数据库相关操作(MySQL)

  第三方模块(django3版本)

pip install mysqlclient

  自己先去MySQL创建一个数据库

  配置数据库连接(settings.py)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'USER': 'name',
        'PASSWORD': 'xxxxxxxxx',
        'HOST': '',  #127.0.0.1(本机)
        'PORT': 端口号,
    }
}

  在APP下的models.py中编写表结构

  

from django.db import models

# Create your models here.

#设计表结构
class Admin(models.Model):
    """管理员表"""
    username = models.CharField(verbose_name="用户名", max_length=32)
    password = models.CharField(verbose_name="密码", max_length=64)

    def __str__(self):
        return self.username

class Department(models.Model):
    """
    部门表(django会自动生成id,并且为主键,自增)
    verbose_name="标题"是用来记录的,一眼能看出这行代表什么,可不写
    """
    title = models.CharField(verbose_name="标题", max_length=32)

    def __str__(self):
        return self.title

class UserInfo(models.Model):
    """
    员工表
    acount = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
    max_digits=10数字总长度为10位
    decimal_places=2小数占两位
    default=0新建账户默认为0
    """
    name = models.CharField(verbose_name="姓名", max_length=16)
    password = models.CharField(verbose_name="密码", max_length=64)
    age = models.IntegerField(verbose_name="年龄")
    acount = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0)
    # DateTimeField年月日时分秒
    # creata_time = models.DateTimeField(verbose_name="入职时间")
    # DateTimeField年月日时分秒,入职时间不需要时分秒,只要年月日用DateField
    creata_time = models.DateField(verbose_name="入职时间")

    #无约束
    # depart_id = models.BigIntegerField(verbose_name="部门ID")

    # 有约束,depart = models.ForeignKey(to="Department", to_field="id")
    # to="Department"与哪张表关联
    # to_field="id"与表中的哪一列关联
    #用ForeignKey时,写的depart,但生成列为depart_id
    # depart = models.ForeignKey(to="Department", to_field="id")

    #第一种 部门表被删除(部门表使用了外键),级联删除on_delete = models.CASCADE
    depart = models.ForeignKey(verbose_name="部门", to="Department", to_field="id", on_delete=models.CASCADE)

    # 第二种:置空,让他变为空置
    # null = True, blank = True设置这列允许为空
    # depart = models.ForeignKey(to="Department", null=True, blank=True, on_delete=models.SET_NULL)

    #在django代码中做约束,gender性别约束后在数据库中只能选择1和2
    gender_choices = (
        (1, "男"),
        (2, "女"),
    )
    gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)

class PrettyNum(models.Model):
    """靓号表"""
    # CharField必须设置长度
    mobile = models.CharField(verbose_name="手机号", max_length=11)
    # null = True, blank = True允许为空
    price = models.IntegerField(verbose_name="价格", default=0)

    level_choices = {
        (1, "1级"),
        (2, "2级"),
        (3, "3级"),
        (4, "4级"),
    }
    level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1)

    status_choices = {
        (1,"已占用"),
        (2,"未占用"),
    }
    status = models.SmallIntegerField(verbose_name="状态", choices=status_choices, default=2)

class Task(models.Model):
    """任务"""

    level_choices = (
        (1, "紧急"),
        (2, "重要"),
        (3, "临时"),
    )
    level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1)
    title = models.CharField(verbose_name="标题", max_length=64)
    detail = models.TextField(verbose_name="详细信息")
    user = models.ForeignKey(verbose_name="负责人", to=Admin, on_delete=models.CASCADE)

  生成表(执行两个命令)

python manage.py makemigrations
python manage.py migrate
  • 在urls.py中,路由(创建URL和视图函数的对应关系)
  • 在views.py中,编写视图函数(编写业务逻辑的)
  • 在templates目录中,编写HTML模板(含有模板语法,可以继承(公共的部分)、静态文件({%  static  'xx'  %}))
  • ModelForm & Form组件,开发增删改查功能
  1. 生成HTML标签(生成默认值)
  2. 请求数据进行校验
  3. 保存到数据库(ModelForm)
  4.  获取错误信息
  • Cookie和Session,将用户登录信息保存起来,下一次登录的时候直接读取就可以了。
  • 中间件,基于中间件实现用户认证(统一做,不用一个个单独实现),基于process_request方法。
  • ORM操作
models.User.objects.filter(id="xxx")
models.User.objects.filter(id="xxx").order_by("-id")
  •  分页组件
  • Ajax请求

 

标签:verbose,回顾,--,py,Django,models,choices,id,name
From: https://www.cnblogs.com/kekeeleven/p/17797501.html

相关文章

  • 第二章读书笔记
    print("学号:3116")#3运行超市抹零结账行为a=float(input("第一个商品价格:"))b=float(input("第二个商品价格:"))c=float(input("第三个商品价格:"))d=a+b+cprint("总计",int(d))print()#4计算学生成绩的分差和平均分a=input("课程一的分数:")b=input("课程二的分数:&qu......
  • Git报错“no branch, rebasing master”
    本次出现这个错误是因为本地提交了commit但是未push成功,所以使用gitpull--rebase,由于远程仓库和本地的commit有冲突,Git无法自动解决冲突时,会切换到一个匿名分支,然后使用gitbranch发现报错“nobranch,rebasingmaster”。解决办法:在当前匿名分支下,解决完冲突,然后使用命令git......
  • OSS存储静态资源(直接上手使用)
    什么是OSSOSS是对象存储服务(ObjectStorageService)的缩写,是一种用于存储和访问大规模数据的云存储服务。它提供了安全、可靠、高扩展性的存储解决方案,可用于存储各种类型的数据,如图片、音频、视频、文档等。OSS具有高可用性和耐久性,能够自动复制数据以保证数据的安全性和可靠性。......
  • Docker Swarm 节点维护
    DockerSwarmModeDockerSwarm集群搭建DockerSwarm节点维护DockerService创建1.角色转换Swarm集群中节点的角色只有manager与worker,所以其角色也只是在manager与worker间的转换。即worker升级为manager,或manager降级为worker。1.1worker升级为manager在manag......
  • 【全志R128外设模块配置】USB外设功能配置
    USB外设功能配置USB功能简介USB功能模块包括了USBHost,USBDevice和OTG功能。USBHost目前已经支持上的功能有:MassStorage,UVC。USBDevice目前已经支持上的功能有:ADB,UAC。OTG主要用作Host与Device的切换,如当板子通过USB线连接到USB主机(PC)上时,此时OTG是......
  • Python生成词云
    一、词云生成的基本原理词云是一种可视化展示文本内容的工具,用于显示文本中出现次数较高的关键词。其主要思想是将文本中频繁出现的词汇以视觉化的方式展现出来,可以很快地帮助人们了解文本的主要内容和关键信息。生成词云的基本原理是,首先需要解析文本中的关键词,统计其出现频率,然后......
  • 内网穿透利器之frp
    一、什么是frp1.1 内网穿透如下图所示,一般情况下,公网内的设备都能够被任意一台设备访问到!!而不同局域网内的设备是相互隔离的,局域网 A 的设备是无法访问到局域网 B 内的设备而内网穿透技术,顾名思义就是能让公网、或者当前局域网外的任意设备访问到局域网内某个设备......
  • Docker Service 创建
    DockerSwarmModeDockerSwarm集群搭建DockerSwarm节点维护DockerService创建service只能依附于dockerswarm集群,所以service的创建前提是,swarm集群搭建完毕。1.创建servicedockerservicecreate命令用于创建service,需要在manager中运行。与创建容器的命令dock......
  • 解决MYSQL查询报错 Expression #4 of SELECT list is not in GROUP BY clause and con
    原因:在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为groupby之后,返回的一些数据是不确定的,所以才会出现这个错误。执行下面的命令后,重启你的代码,就可以了selectversion(),@@sql_mode;SETsql_mode=(SELECTRE......
  • 计算机网络之数据链路层(全)
    [复习提示]王道:本章是历年考试中考查的重点。要求在了解数据链路层基本概念和功能的基础上,重点掌握滑动窗口机制、三种可靠传输协议、各种MAC协议、HDLC协议和PPP协议,特别是CSMA/CD协议和以太网帧格式,以及局域网的争用期和最小帧长的概念、二进制指数退避算法。此外,中继器、网卡、......