首页 > 数据库 >Django链接数据库 增删改查/配置

Django链接数据库 增删改查/配置

时间:2022-12-10 17:36:01浏览次数:45  
标签:请求 models 改查 py request Django static 增删 数据

Django静态文件配置

服务端需要生成HTML文件,需要一些额外的CSS,JS代码文件以及img图片等,还有一些脚本帮助我们渲染网页页面,在Django中我们可以把这些文件统称为静态文件。

我们需要把这些文件统一收集起来 方便管理。

根目录下面创建 static目录,把所有的静态文件统一放入该目录中。

如果 static目录中文件过多 也可以再次划分 通过文件格式

css目录/js目录/img目录/libs目录(其他脚本插件等)

解耦合更加方便管理

默认文件资源是无法直接访问的 需要我们开发静态文件资源访问接口

静态文件相关配置

创建完static目录后 需要在settings配置文件中设置

STATIC_URL = '/static/'

STATICFILES_DIRS = [  os.path.join(BASE_DIR, 'static')  ]
# 即静态文件存放在 BASE_DIR/static 下(和manage.py同级目录下)


STATICFILES_DIRS = [  os.path.join(BASE_DIR, 'static'),
             os.path.join(BASE_DIR, 'static001')             ]
'''
接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回
'''


接口前缀

STATIC_URL = '/static/'

# STATIC_URL的作用是用于拼接静态文件的存储路径。访问静态文件资源的接口前缀 通行证.这个可以自定义 不一定要命名'/static/'

动态解析接口前缀

<link rel="stylesheet" href="../static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
静态获取接口前缀



动态获取接口前缀
关键词 {% load static %}
  
{% load static %}

<link rel="stylesheet" href="{% static "/bootstrap-3.4.1-dist/css/bootstrap.min.css" %}">
<script src ="{%static'bootstrap3.4.1dist/js/bootstrap.min.js' %}"></script>
 
 先引入设置 {% load static %}
 然后连接的时候接口前缀直接填写 {% static /文件地址 %} 

form表单

From表单默认是get请求方式,提交数据需要改为post请求

from表单 action参数

<from action=' '></from>
// action参数不设置 默认提交给当前页面所在的地址
<from action='https://www.baidu.com'></from>
// 填写完整地址提交  绝对路径
<from action='/login/'></from>
// 只写后缀,提交到当前项目的页面地址 相对路径

from表单 method参数

<from action=''></from>
// method参数不设置 默认是get请求方式 


<from action='' method = 'post'></from>
// 改为 post请求方式  


请求方法补充:
    get
       朝服务器索要数据 也可以携带一些额外的要求
       携带额外数据的方式  URL?name=123&uuu=xxx
       额外携带的数据不能太大 最好小于2kb
        
    post:
       朝服务器提交数据
       携带额外数据的方式:请求体
       请求体携带数据安全性较高 且没有大小限制



request对象方法初始

获取用户提交数据

request.method
# 返回请求方式 并且是全大写 GET 或者 POST

request.POST
#获取post请求体里面携带的所有数据
#{name:['moon'],password:['212333'],hobby:['111','222','333']}

request.POST.get('name')
//获取到请求体里面的数据 默认获取数据列表中最后一个元素
//moon

request.POST.getlist('hobby')
//获取请求体里面的数据 获取数据列表
//['111','222','333']




def login(request):
    if request.method == 'POST':
        return HttpResponse('收到')
    return render(request,'login.html')
  # 通过这个方法可以区分是 get请求 还是post请求
  
  
  def login(request):
    if request.method == 'POST':
      #先判断请求方式
        if request.POST.get('username') == '123':
          #在接收请求体数据 获取具体数据潘丹
             return HttpResponse('登录成功')
        return HttpResponse('收到')
    render(request,'login.html')

获取用户提交的get请求数据

request.GET
#获取get请求体里面携带的所有数据
#{addr:['shanghai']}

request.GET.get()
//获取到请求体里面的数据 默认获取数据列表中最后一个元素
//shanghai


request.GET.getlist()
//获取请求体里面的数据 获取数据列表
//['shanghai']


Django链接mysql

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# 在settngs文件中 默认链接的是 'db.sqlite3'数据库 但是我们不需要


django链接mysql

第一步: 更改默认配置 链接mysql

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'db1',
         # 链接的库名
        'USER':'moongod',
        'PASSWORD':'123',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'CHARSET':'utf8'
    }
}


第二步:django默认用的是 mysqldb模块链接,导致报错
       更改默认链接模块 为 pymysql
       在同项目中的__init__py文件中插入代码
       
       import pymysql
       pymysql.install_as_MySQLdb()
       # 将pymysql代替mysqldb
        

补充:mac苹果笔记本如果出现 str编码错误 去报错行把 decode 改为 encode即可

Django操控mysql

Django ORM

'''
什么是orm,可以让不会sql语句的人也可以直接用面向对象的代码 简单快捷的操作
数据库
缺点:封装程度太高,执行速度没有sql语句快

创建类  =  创建表

类产生对象   =  表添加记录

对象属性   =   记录里的字段对应的值
'''


 
应用在models.py文件下 在这个文件中编写关于数据库的代码

class l1(models.Model):
    # 创建一张表 名为 l1
    lid = models.AutoField(primary_key=True)
    # 设置 字段 lid 类型为 自增 和 主键
    name = models.CharField(max_length=18)
    # 设置 字段 name 类型为 char(18)
    password = models.IntegerField()
    # 设置 字段 password 类型 为 int

这样就创建了一张表 


!!!!!!! 然后必须要进行数据库迁移命令才可以生效!!!!!

在pycharm Terminal 命令行输入

python3.8 manage.py makemigrations
# 将操作记录记录在(migrate)文件夹内

python3.8 manage.py migrate
# 将操作通过到数据库中

这样就通过django 创建好了一张表


只要改了models.py 里面数据库的任何数据 都需要在执行一次
python3.8 manage.py makemigrations
python3.8 manage.py migrate
才可以生效


makemigrations
在django创建表时 如果不设置主键字段 
ORM会默认生成一个字典id 作为主键并具有自增功能 

Snipaste_2022-12-09_20-19-20

django操控mysql增删改查

表字段的增删改查

表字段的增

表中增加字段:
直接在models.py文件中直接在生成表的类里添加字段
然后在执行 提交数据
python3.8 manage.py makemigrations 
和确认数据迁移
Python3.8 manage.py migrate

表中已有数据后 在设置的新字段
新增字段 可以为空 或 给新增字段 设置默认值
这样才可以新增

表字段的改

表中改字段的类型 名字等:
直接在models.py文件中直接在生成表的类里更改字段
然后在执行 提交数据
python3.8 manage.py makemigrations
和确认数据迁移
python3.8 manage.py migrate

表字段的删

表中删字段:
直接在models.py文件中直接在生成表的类里删除对应字段
然后在执行 提交数据
python3.8 manage.py makemigrations
和确认数据迁移
python3.8 manage.py migrate

风险:确认迁移后对应字段的数据也就全部没有了
每次执行迁移命令前都要检查自己的代码

数据的增删改查

数据的查

username = request.POST.get('username')、
# 通过接收post请求,获取前端传的值
password = request.POST.get('password')
# 通过接收post请求,获取前端传的值
from app01 import models
# 把这个功能的models文件导过来

res = models.l1.objects.filter(name=username)
# 使用models文件查询对应表类 filter过滤条件为 字段name的值 = 前端输入的值
# 等同于sql语句:select * from l1 where name = 'moon'

拿到res res = <QuerySet [<User object>]>
# 大概是一个列表 里面里面有一个对象,或者多个

user_obj = res[0] 
# 通过索引去值 把数据对象拿出来
# 不支持负数索引


方式二:
   user_obj = models.表名.object.filter(username = username).first()
 # 直接拿到数据对象



user_obj.name
user_obj.password
这样就可以直接通过点的方式拿到表格内的数据

数据的增

username = request.POST.get('username')、
# 通过接收post请求,获取前端传的值
password = request.POST.get('password')
# 通过接收post请求,获取前端传的值

from app01 import models
# 把这个功能的models文件导过来

方式一:
res = models.l1.objects.create(username=username,password=password)

models.l1.objects.create
# 新增数据语法
# 针对表l1 新增对象 (字段名=字段值)



方式二:

user_obj = models.l1(username=username,password=password)
# 针对l1表的类 生成一个新的对象
user_obj.save()
# 保存对象 = 相当于给表里添加数据

标签:请求,models,改查,py,request,Django,static,增删,数据
From: https://www.cnblogs.com/moongodnnn/p/16971929.html

相关文章

  • 静态文件配置 django连接MySQL django模型层初识 ORM基本语句
    目录静态文件配置1.问题描述2.静态文件3.资源访问form表单属性补充actionmethod请求方法get请求post请求views层request对象request.methodrequest.POSTrequest.GETpyc......
  • Django只session
    1.session流程2.添加sessiondefindex(request):#添加sessionrequest.session["set_session"]="defaulit001"returnHttpResponse("测试效能")设置s......
  • Django web框架
    博客目录wsgiref模块jinja2模板语法django框架简介django基本操作静态文件配置django连接MySQLdjango模型层初识ORM基本语句......
  • 使用JavaWeb进行增删改查操作
    一、基本环境准备1、配置pop.xmlpop文件可以直接复制使用不作修改,也可以根据自己的需求进行增删依赖和插件 1<?xmlversion="1.0"encoding="UTF-8"?>2<project......
  • Django之Cookies
    一cookies简述Cookie的由来大家都知道HTTP协议是无状态的。无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请......
  • django极速入门指南-02
    内容概要静态文件配置request对象方法pycharm连接MySqldjango连接MySqldjango模型层初识基本ORM操作静态文件配置1.静态文件 指的是不怎么经常变化的文件,主要......
  • Django框架:2、静态文件配置、form表单、request对象、pycharm链接数据库、django链接
    今日内容详细静态文件配置1.编写一个用户登录页面2.静态文件不怎么经常改变的文件主要针对html文件所使用的到的各种资源 css文件、js文件、img文件、第三方框架文......
  • 静态文件配置,pycharm链接数据库,django链接数据库 ORM
    静态文件配置​ 不经常变化的软件,主要针对html文件所使用到的各种资源eg:css文件、js文件、img文件、第三方框架文件。django针对静态文件资源需要创建一个目录统一存......
  • django静态文件配置以及连接mysql
    静态文件配置编写一个用户登录页面静态文件不怎么经常变化的文件主要针对html文件所使用的各种资源css文件js文件img文件、第三方框架文件django怎对静态文件资......
  • Django中forms组件(常用很重要)
    基础:forms组件有什么用1.渲染html代码2.校验数据3.展示提示信息一.如何使用forms组件#如何使用forms组件,必须书写一个forms类#1.导入formsfromdjangoimportforms......