django基础

目录

  • django三板斧
  • 登录功能
  • 静态文件
  • request对象方法
  • pycharm链接MySQL
  • django链接MySQL
  • django orm简介
  • orm基本使用
  • *orm数据操作

内容

django三板斧

django自带 重启功能:当识别到项目中代码有变化之后,隔段时间会 自动重启,但是有时候较慢

与浏览器打交道的视图函数都应该有 返回值

  1. HttpResponse:返回字符串类型的数据
  2. render:返回html文件,并且支持模板语法
  3. redirect:重定向,括号内可以写其他网站的全称,也可以自己网站的后缀

登录功能

  1. 开设接口返回登录界面
  2. 登录界面需要使用bootstrap并且还需要自己编写css和js( 静态文件
  3. 页面需要获取前端用户数据并且传递给后端: form表单
  4. 访问登录页面:静态文件全部显示资源不存在,因为我们并没有开设静态资源访问的接口
  5. 开设静态资源的访问接口: settings.py

静态文件资源访问接口固定配置

django基础django基础
STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]

View Code

配置文件中的两点疑惑

/static/是 接口前缀,表示具备访问静态文件资源的权限, 具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找

STATICFILES_DIRS = []: 列表(用来存储多个元素的)

接口前缀动态绑定

如果templates中有很多html文件并且都需要引入静态资源,现在把接口前缀修改了,会造成页面无法加载资源

django基础django基础
{% load static %}
  "stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">

django基础

编写完成后不会经常被修改的与html页面相关的文件

css文件、js文件、图片文件、第三方框架文件(bootstrap)

在django中静态文件单独开设一个文件夹存储 ,默认叫 static文件夹

在该文件夹内还可以根据功能的不同继续划分不同的文件
request对象方法

提交post请求:默认会报403

配置文件中注释一行

django基础django基础
MIDDLEWARE = [
        # 'django.middleware.csrf.CsrfViewMiddleware',]

View Code

get请求和post请求都会触发同一个视图函数login的运行

get请求返回一个登录页面;post请求获取用户数据并校验

获取当前请求方式

request.method:返回的是纯大写的请求方法字符串

获取post请求提交的普通数据

request.POST:结果是一个QueryDict 可以看成字典处理

  • request.POST.get(‘username’)
  • *request.POST.getlist(‘hobby’)

get方法会拿到值列表中 最后一个元素,而不是整个列表

getlist方法会直接拿到 整个值列表

如何获取url后面携带的数据

request.GET:结果是一个QueryDict 可以看成字典处理

  • request.GET.get(‘info’)
  • *request.GET.getlist(‘cityList’)

特征与上述request.POST一致,使用场景也很多
pycharm链接MySQL

pycharm也可以充当很多数据库软件的客户端: database

链接数据库

  1. 选择数据库
  2. 首次链接需要下载驱动:download driver…

  3. 测试链接如果不通过,则需要换驱动重新下载使用

django链接MySQL

django默认自带一个sqlite3数据库,但是功能很少,仅用于本地测试

默认配置

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

View Code

修改配置

django基础django基础
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'shun01',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '******',
    }
}

View Code

指定模块

在项目同名的文件夹内的__init__.py或者应用名的文件夹内的__init__.py添加一行固定的代码

django基础django基础
import pymysql

pymysql.install_as_MySQLdb()

View Code django orm简介

ORM: 对象关系映射

特点

能够让不会写SQL的python程序员使用python语法就可以直接操作MySQL,提升了开发效率,封装了SQL语句,有时候可能效率不高,还需要人为编写SQL调优

概念

  • 表 类
  • 一行行数据 类产生的一个个对象
  • 数据字段 对象的一个个属性

orm基本使用

如果需要使用ORM,需要去应用下的models.py中编写代码

编写类代码

django基础django基础
class Users(models.Model):
    uid = models.AutoField(primary_key=True)  # 等价于uid int primary key auto_increment
    name = models.CharField(max_length=32)  # 等价于name varchar(32)
    pwd = models.IntegerField()  # 等价于pwd int

View Code

执行数据库迁移命令

python manage.py makemigrations:记录操作

python manage.py migrate:将操作迁移到数据库

首次执行迁移命令,django还会自动创建一些默认需要使用到的表

表名的特征

app01_users:由于django支持多个应用,为了区分不同应用下可能会出现相同的表名,所以自动加上了应用的前缀,因为同一个应用下不可能出现相同的表名

扩展

  • 表的主键可以不写,orm会自动帮你写一个名为id的主键
  • 每次修改了跟数据库相关的python代码,都需要重新执行迁移命令
  • 针对两个迁移命令,可以采用pycharm提示功能编写:tools>>>run manage.py task

orm数据操作

django基础django基础
user_obj = models.Users.objects.create(name='jack', pwd='333')
  print(user_obj)
  print(user_obj.uid)
  print(user_obj.name)
  print(user_obj.pwd)

View Code

django基础django基础
res = models.Users.objects.filter(name='jason')
  print(res)  # ]>
  print(res[0])  # Users object
  print(res[0].uid)  # 1
  print(res[0].name)  # zhou
  print(res[0].pwd)  # 123

View Code

django基础django基础
models.Users.objects.filter(uid=1).update(name='shunNB')

View Code

django基础django基础
models.Users.objects.filter(uid=3).delete()

View Code

django基础

Original: https://www.cnblogs.com/zzs0626/p/16260536.html
Author: 顺溜_7
Title: django基础

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

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

(0)

大家都在看

  • Redis-Cluster实战–5.使用redis-cli安装

    Redis-Cluster实战–5.使用redis-cli安装 博客分类: redis 缓存 redis-cluster redisCluster指派槽cluster-infom…

    Linux 2023年5月28日
    0101
  • bash怎么调用sql并保存结果

    mysql -uroot -pP@ssw0rd123.abc -h127.0.0.1 -P3306 -e \‘select c.TABLE_SCHEMA ,c.TABL…

    Linux 2023年6月7日
    0179
  • 将Java代码打包成jar文件转换为.exe可执行程序方法

    ​ 做完学生管理系统后我想将代码打包成一个可执行程序,那样就可以直接点击在Windows下运行了,下面就跟大家分享下打包方法。 将Java的代码转换成 .exe 文件需要先把代码打…

    Linux 2023年6月6日
    0103
  • 【论文笔记】(知识蒸馏)Distilling the Knowledge in a Neural Network

    摘要 模型平均可以提高算法的性能,但是计算量大且麻烦,难以部署给用户。《模型压缩》这篇论文中表明,知识可以从复杂的大型模型或由多个模型构成的集成模型中压缩并转移到一个小型模型中,本…

    Linux 2023年6月7日
    0186
  • 企业DevOps之路:jenkins 搭建

    安装 jdk8.0 下载jdk8.0 https://ftp-new-pc.pconline.com.cn/pub/download/201903/pconline15521980…

    Linux 2023年5月27日
    0110
  • MediaFire 网盘队列下载脚本

    MediaFire是一个国外的网盘。通常情况下,我们可以用浏览器下载MediaFire的文件,但是不能同时下载过多文件,只能几个几个地慢慢手动下载,比较费时间,所以我设计了这样一个…

    Linux 2023年6月6日
    0138
  • docker:alpine使用logrotate切割日志

    最近在交付项目的时候使用了docker,大家都知道日志是项目定位问题的重要依据,但如果一开始项目本身没有对日志进行合理切割那就会导致长时间运行的项目日志文件大得编辑器打不开的情况。…

    Linux 2023年6月13日
    0100
  • uniapp使用阿里云矢量图标库,h5端显示正常,真机app不显示问题解决

    1、在阿里云矢量图标库网站管理界面如上图,首先下载至本地1的位置,然后在2的位置复制代码 2、在下图中static目录下放入下载的iconfont.css文件,并且修改里面的链接,…

    Linux 2023年6月7日
    0112
  • Linux系统编程之命名管道与共享内存

    在上一篇博客中,我们已经熟悉并使用了匿名管道,这篇博客我们将讲述进程间通信另外两种常见方式——命名管道与共享内存。 1.命名管道 管道是使用文件的方式,进行进程之间的通信。因此对于…

    Linux 2023年6月8日
    097
  • Java 内功修炼 之 数据结构与算法(一)

    (1)双向链表通过上面单链表相关操作,可以知道 单链表的 查找方向唯一。而双向链表在 单链表的 基础上在 添加一个指针域(pre),这个指针域用来指向 当前节点的上一个节点,从而实…

    Linux 2023年6月11日
    0111
  • 冯·诺依曼体系结构

    cpu运算速度>寄存器速度>L1~L3Cache>内存>外设(磁盘)>光盘 外设(输入设备、输出设备)不和cpu直接数据交换 cpu直接和内存数据交换…

    Linux 2023年6月13日
    0102
  • python实现Mysql数据库批量新增数据

    一、批量插入数据的场景 二、插入数据的工具选择 三、选择Python进行批量插入 Python实现批量插入Mysql数据库数据 一、批量插入数据的场景 在进行数据压力时需要进行大数…

    Linux 2023年6月14日
    088
  • 堆栈

    目录: 9、【剑指Offer学习】【面试题09:用两个栈实现队列】 30、【剑指Offer学习】【面试题30:包含min函数的栈】 31、【剑指Offer学习】【面试题31:栈的压…

    Linux 2023年6月13日
    0117
  • 小公司比较吃亏的两道微服务面试题

    其实选择工作的时候,很多技术牛人都会选择一些小而美的公司,技术全面,能够以一个更全面的视角看整个公司的运作,人和人之间的相处也很简单。但是,有两道微服务的面试题,小公司的朋友们会比…

    Linux 2023年6月14日
    0108
  • requests模块

    掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 超时参数t…

    Linux 2023年6月8日
    0118
  • Springboot 实现Redis 同数据源动态切换db

    参考:https://developer.aliyun.com/article/952648 Original: https://www.cnblogs.com/herd/p/16…

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