今日内容 Django连接MySQL操作及ORM基本操作

  • *静态文件及相关配置
1.先编写一个登录功能
     (1)创建django项目并创建一个app
     (2)在url.py添加一组对应关系
     (3)在app的views.py中编写登录核心逻辑
     (4)利用三板斧与前端做交互
2.我们在访问django框架资源 的使用之所以可以拿到数据是因为提前在urls.py中开设了相应的资源接口,如果访问拿不到资源那么就是没有开设相应的借口

3.静态文件
html页面中使用的不经常改变的资源
针对静态文件资源一般 都会放在static文件夹内,当static目录出现了很多不同类型的静态文件资源那么还可以分类管理

     (1)第三方文框架件     others文件夹
     (2)css文件               css文件夹
     (3)js文件                 js文件夹
     (4)图片文件              img文件夹
4.针对静态文件资源的访问也需要提前开设相应的借口
 STATIC_URL = '/static/'
    # 静态文件资源配置
    STATICFILES_DIRS = [
         os.path.join(BASE_DIR, 'static')
    ]
5.接口前缀
STATIC_URL = '/static/'  # 接口前缀
6.动态解析
    {% load static %}
   "stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">

请求方法

URL:同意资源定位符(网址)

1.GET请求
       朝别人索要数据,也可以携带额外的数据
格式:url?xxx=yyy&zzz=ooo&aaa=bbb
上述携带数据的方式有两个限制
        (1)数据只能是一些无关紧要的非敏感数据
        (2)数据大小有限制 2KB~4KB左右
GET请求没有请求体(THHP数据格式)

2.POST请求
        朝别人提交数据,也可以携带额外的数据,数据都是放在请求体中并且数据大小没有限制
3.form表单默认的数据提交方式是get
修改:method = 'post'
action  控制数据的提交地址
方式1:不写  朝当前页面所在的地址提交
方式2:写后缀 /index/ 自动补全ip和port
方式3:写全称 http://www.baidu.com/

4.提交post请求前期需要去配置文件中注释一行代码
MIDDLEWARE = [
'django.middleware.csrf.CsrfViewMiddkeware'
]
  • request对象方法*
    方法 描述**

request.method 获取请求方式 结果是纯大写的字符串 request.POST 获取POST请求发送来的普通数据(不包含文件) request.POST.get() 默认只获取列表中最后一个数据值 request.POST.getlist() 获取键对应的整个 列表 无论有几个数据值 request.GET 获取url后面携带的非敏感数据 request.GET.get() 默认只获取列表中最后一个数据值 request.GET.getlist() 获取键对应的整个列表,无论有几个数据值

  • *django连接MySQL
django默认使用的是sqlite3 但是这款数据库一般只用于本地测试 功能很少
1.配置文件中修改配置
       DATABASES = {
       'default': {
             'ENGINE': 'django.db.backends.mysql', # 指定数据库软件名称
             'NAME': 'day55',   # 指定库名
             'USER': 'root',
             'PASSWORD': '123',
             'HOST': '127.0.0.1',
             'POST': 3306,
             'CHARSET': 'UTF8'
       }
}
2.指定连接mysql的模块
    django1.11版本需要在项目或者应用目录下的__init__.py中编写一行代码
     import  pymysql
        pymysql.install_as_MySQLdb()
    django2.2以上版本需要使用mysqlclient模块
  • *django orm简介

一.什么是ORM

ORM : 全称 object relational mapping, 对象关系映射
功能 : 通过orm实现使用操作对象的方式来操作数据库中的数据
目的 : 就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
缺陷 : sql 封装死了, 有时候查询速度很慢

二.ORM与数据库的映射关系

类                  映射成           表
对象               映射成           记录
对象点属性       映射成          字段对应的值

三.ORM创建类(表)

模型类需要写在应用下的 models.py 文件中
class User(models.Model):   # 类似 定义了表名
       id = models.AutoField(primary_key=True)    # 类似与定义了主键  id int primary key auto_increment
       name = models.CharField(max_length=32)  # 类似于定义了普通字段   name varchar(32)
        pwd = models.IntegerField()  # 类似于定义了普通字段   pwd int

四.数据库迁移/同步命令

凡是对model.py中跟数据库相关的代码进行了更改就必须在项目目录下执行两条命令

这两条命令叫数据库迁移命令, 就比如上面我们创建了一个模型类, 于是我们就要进行这两条命令

1.将models中有关数据库的操作记录下来(migrations文件夹)
    python38 manage.py makemigrations
2.将操作真正影响到数据库中
    python38 manage.py migrate
'''当修改了models中与数据库相关的代码 都必须执行上述的命令'''
  • *orm基本操作

一.ORM语法

数据的增删改查

1.增加数据

假设有用户表 User# 方式一 :
user_obj.models.User.objects.create()
方式二 :
user_obj = models.User() user_obj.save()

2.查询数据

方式一 :
user_obj = models.User.objects.filter()[索引]
方式二:
user_obj = models.User.objects.filter().first()
如何获取对象 可以使用first()方法 如果没有值会返回None 我们if判断即可

查询所有数据
方式一 :
user_obj = models.User.objects.filter()
方式二 :
user_obj = models.User.objects.all()

3.修改数据

models.User.objects.filter(id=1).update(name='jasonNB')

4.删除数据

models.User.objects.filter(id=4).delete()

二.ORM外键关联

MySQL
    一对多
        外键字段建在多的一方
    多对多
        外键字段建在第三张关系表
    一对一
        外键字段建在查询频率较高的表中

ORM
    一对多
        外键字段建在多的一方
    publish = models.ForeignKey(to='Publish',on_delete=models.CASCADE)

     多对多
        外键字段可以直接写在某张表中 orm会自动帮你创建第三张表
    authors = models.ManyToManyField(to='Authors')
   一对一
        外键字段建在查询频率较高的表中
    detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)

Original: https://www.cnblogs.com/tai-yang77/p/16643836.html
Author: 你好你好你好丶
Title: 今日内容 Django连接MySQL操作及ORM基本操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/602931/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • vivo互联网机器学习平台的建设与实践

    vivo 互联网产品团队 – Wang xiao 随着广告和内容等推荐场景的扩展,算法模型也在不断演进迭代中。业务的不断增长,模型的训练、产出迫切需要进行平台化管理。v…

    Python 2023年10月28日
    039
  • Python游戏开发入门课程(pygame)学习笔记(01)

    import sys,pygame pygame.init() size=w,h=800,400 speed=[1,1] color=0,0,0 fps=100 fclock=py…

    Python 2023年9月18日
    039
  • python实现API的调用

    在日常工作中,可能需要结合网上现在的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。因此API的调用和数据接口的访问都是做数据分析的一个常用操作,如何快速实现A…

    Python 2023年8月2日
    061
  • data analysis and predict

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月5日
    036
  • python将str写入csv_python – Pandas将数据帧写入CSV fi

    如果您遇到编码为’utf-8’的问题,并且想要逐个单元格地进行,您可以尝试以下其他方法。 Python 2 (其中”df”是您的Da…

    Python 2023年8月7日
    043
  • Scrapy + 案例

    那我们就直接来一个案例来仔细讲解一下,步骤是怎么样的。这个例子是前不久一个学妹的作业。我拿来写写博客哈哈哈哈哈。 例子是爬取人邮教育区里面的书籍。老步骤 ; 一、创建爬虫项目 打开…

    Python 2023年10月3日
    046
  • django 系列

    博客园: https://www.cnblogs.com/wupeiqi/articles/5246483.html 全教程: http://c.biancheng.net/dja…

    Python 2023年6月12日
    076
  • Python数据分析(一):NumPy

    一个数据:表达一个含义,如:3.14一组数据:表达一个或多个含义,如:3.14,3.134维度:一组数据的组织形式 1、一维数据 一维数据由对等关系的有序或无序数据构成,采用线性方…

    Python 2023年8月26日
    039
  • 【Python】学生管理系统——详细解释+代码+详细注释(课设必过)

    带你编写学生管理系统(Python) 很多学生在学校学习完Python,就要做一个课设考验你对知识的掌握程度,这次就教大家如何来用Python来实现一个学生管理系统 对学生管理系统…

    Python 2023年7月31日
    052
  • 机器学习 拜占庭容错方法: Bulyan

    论文链接: http://proceedings.mlr.press/v80/mhamdi18a/mhamdi18a.pdf SGD存在问题 数据并行的SGD梯度聚合是所有梯度的线…

    Python 2023年10月24日
    041
  • dataframe小技巧

    一.基本操作篇 1.新建自己定义column_name: import pandas as pd df = pd.DataFrame(columns=[‘col1′,’col2’,…

    Python 2023年8月18日
    051
  • pytest+request+allure+excel接口自动化搭建 从0到1【二 读取Excel Case信息】

    读取Excel测试数据 一、使用xlrd读取数据 * 1.1判断文件格式是否是xlrd开头 1.2读取数据返回List 二、使用pandas读取数据 目前读取Excle数据有2种方…

    Python 2023年9月14日
    071
  • NumPy——数组函数与方法_数组文件的输入与导出

    除了提供多维数组对象 ndarrary 、高效的数组操作函数和方法外, NumPy 还支持磁盘文本或二进制数据的读写操作。 NumPy 提供了两个主要的函数,分别用于将 ndarr…

    Python 2023年8月26日
    042
  • 【山大智云项目日志】Seahub+Proset分析(8)

    2021SC@SDUSC 前面我们分析了Proset部分的一些配置文件,现在我们把重点转向python文件夹中的seafes和seafevents。前者是建立ElasticSear…

    Python 2023年8月5日
    057
  • IDEA乱码解决

    乱码问题 相信许多小伙伴在做Web项目的时候都会遇到的一些乱码小问题,经常出现各种乱码,不是控制台乱码、日志乱码就是网页乱码等。现在我们把它们统一改成UTF-8编码格式,以后就不会…

    Python 2023年11月7日
    054
  • python使用pytest接口自动化测试的使用

    愿你我相遇,皆&#…

    Python 2023年9月13日
    045
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球