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)

大家都在看

  • 学习一下 SpringCloud (二)– 服务注册中心 Eureka、Zookeeper、Consul、Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月11日
    0114
  • docker –link容器互联

    服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64…

    Linux 2023年6月7日
    0100
  • 基于 vite 创建 vue3 全家桶项目(vite + vue3 + tsx + pinia)

    vite 最近非常火,它是 vue 作者尤大神发布前端构建工具,底层基于 Rollup,无论是启动速度还是热加载速度都非常快。vite 随 vue3 正式版一起发布,刚开始的时候与…

    Linux 2023年6月7日
    0116
  • IDEA maven项目导包报红线

    原因:没有导入maven包 最后有设置一次,以后就无需设置 1、问题 2、打开Setting 3、将下载好的maven包导入 配置一次,就不用每次都需要配置 1、如果在这个界面先关…

    Linux 2023年6月14日
    0115
  • JPA作持久层操作

    JPA(Hibernate是jpa的实现) jpa是对实体类操作,从而通过封装好的接口直接设置数据库的表结构。虽然jpa可以直接通过编写java代码来操作数据库表结构,避免了sql…

    Linux 2023年6月7日
    0122
  • 标签泄露 Label leaking

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    096
  • CentOS——Redis消息订阅发布

    作用: 发布订阅类似于信息管道,用来进行系统之间消息解耦。类似于mq,rebbitmq,rocketmq,kafka,activemq 主要有消息发布者和消息订阅者。 比如:订单支…

    Linux 2023年5月28日
    0108
  • ES查询区分大小写

    ES查询在默认的情况下是不区分大小写的,在5.0版本之后将 string类型拆分成两种新的数据类型, text用于全文搜索(模糊搜索), keyword用于关键字搜索(精确搜索)。…

    Linux 2023年6月8日
    0111
  • 搭建部署Docker

    Docker安装准备: 首先看下服务器是否有旧版本,如果有需要卸载并且安装依赖 然后下载docker仓库repo源: 安装完成后查看docker仓库版本信息: yum安装docke…

    Linux 2023年6月8日
    0112
  • 做任何事(决策)之前都要先考虑成本,再考虑收益

    所谓成本,就是我们在做一件事情时所付出的代价。 这个代价,或者说这个成本,有多有少,有显性有隐性,有我们知道的成本,也有我们不知道的成本。一切都是有成本的。 成本都有什么呢?一件事…

    Linux 2023年6月14日
    092
  • 爬取与数据存储

    ch5. 数据存储 文件存储 JSON文件存储 关系型数据库存储 Mysql 1. JSON文件存储 1. JSON中的对象和数组 *对象 ​ 格式为 {key1:value1, …

    Linux 2023年6月7日
    083
  • frp实现Windows远程连接(docker)

    服务端配置 服务端拉镜像 docker pull snowdreamtech/frps 在某个目录下新建配置文件 frps.ini ,比如我是在/home/docker/frp目录…

    Linux 2023年6月8日
    0101
  • 使用MyBatis Generator代码生成器的简单模式

    在动态web项目的lib目录下放入mybatis-3.2.2jar、mysql-connector-java-5.1.25-bin.jar、log4j-1.2.17.jar还有生成…

    Linux 2023年6月8日
    0120
  • linux学习相关资料整理

    Posted on2022-09-08 13:09 brad1208 阅读(20 ) 评论() 编辑 linux常用指令记录 Python3.9.9安装 supervisor安装与…

    Linux 2023年6月6日
    0100
  • Tensorflow-逻辑斯蒂回归

    1.交叉熵 逻辑斯蒂回归这个模型采用的是交叉熵,通俗点理解交叉熵 推荐一篇文章讲的很清楚: 因此,交叉熵越低,这个策略就越好,最低的交叉熵也就是使用了真实分布所计算出来的信息熵,因…

    Linux 2023年6月6日
    086
  • 30款提升组织效能 SaaS 工具,我们的宝藏工具箱大公开

    熟悉 Juicedata 的小伙伴知道,从2017年成立到第一款产品发布、从寻找PMF(Product Market Fit) 到开源,我们一直保持着一个精简的团队配置,不少人都很…

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