(day50)二、文件配置、ORM
目录
一、静态文件
(一)配置html文件
默认情况下,所有的html文件都放在templates文件夹下
配置文件夹路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
(二)什么是静态文件
网站所使用的到的提前写好的css、js、第三方的前端模块、图片等修饰html文件的都叫做静态资源
默认情况下网站所用到的静态文件资源全部会放在static文件夹下
通常情况下static文件夹内部还会再建其他文件夹:
- css文件夹
- js文件夹
- font文件夹
- img文件夹
- Bootstrap
- fontawesome
(三)静态文件配置
django中需要手动创建静态文件存放的文件夹
STATIC_URL = '/static/' # 访问静态资源接口前缀,通常情况下接口前缀的名字也叫static
# 手动配置静态文件访问资源
STATICFILES_DIRS = [ # 静态资源所在的文件夹路径
os.path.join(BASE_DIR,'static') # 将static文件下的资源暴露给用户
]
(四)静态文件动态绑定
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.css'%}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.js' %}"></script>
(五)form表单POST请求配置
get请求可以携带参数
http://127.0.0.1:8000/login/?username=wick&password=123特点:url?xxx=xxx&yyy=yyy
- 携带的数据不安全
- 携带的数据大小有限制,最大好像在4kb左右
- 通常携带不安全的数据
action
- 不写,默认向当前地址提交
- 只写后缀,/index
- 写全路径
提交post请求返回403
需要配置文件中注释一行
# 中间件 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]django后端的视图函数默认处理get请求,无论是get还是post请求,都会执行视图函数
二、request方法初识
(一)request.method
获取请求方式,纯大写的字符串
(二)request.POST
获取用户提交的post请求数据
- 获取数据
- request.POST.get():默认获取最后一个元素
- request.POST.getlist():
(三)request.GET
获取用户提交的get请求携带的参数
- 获取数据
- request.GET.get():默认获取最后一个元素
- request.GET.getlist():
三、django连接MySQL
(一)配置数据库
settings.py文件中设置DATABASES参数:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 指定数据库类型
'NAME': 'day49', # 指定库的名字
'USER':'root', # 注意 键必须是全大写
'PASSWORD':'123qwe',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
(二)配置连接模块
django默认使用mysqldb模块连接,需要手动配置文件使用pymysql模块
- 项目名下的init文件
- 文件名下的init文件
# 上面的init文件中设置(无论哪一个都行,只要设置一个就可以了)
import pymysql
pymysql.install_as_MySQLdb()
四、django ORM简介
(一)ORM
对象关系映射
- 类映射表
- 对象映射数据
- 对象.属性映射字段对应的值
(二)优缺点
优点
让不会数据库操作的人也能够简单的去从操作数据
缺点
封装程度太高,有时候会出现查询速率偏低的问题
所以工作中,简单的用orm,复杂的,追求速度的则手动书写sql语句
(三)配置orm
书写模型类
应用下model.py中书写模型类
一个django项目对应一个数据库
(四)数据库迁移(同步)命令
只要models中和数据库相关的代码修改了,就要重新执行下面命令
python3 manage.py makemigrations
记录数据库的修改
python3 manage.py migrate
将修改操作同步到数据库
五、模型表字段的增删改查
(一)字段的修改
直接修改models中的模型类代码,再执行两条迁移命令
# 方式1 设置默认值
email = models.EmailField(default='123.qq.com')
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender =models.CharField(max_length=32)
(二)字段的删除
直接注释或删除对应的字段,然后再执行迁移命令(谨慎使用)
六、模型表数据的增删改查
(一)增
create方法会有一个返回值,返回值就是当前被创建的对象本身
user_obj = mpdels.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)
(二)删
- delete:会将filter查询出来的列表中所有的对象全部删除
- 一般情况下不会使用,会使用标记删除
models.User.objects.filter(id=delete_id).delete()
(三)改
update:会将filter查询出来的列表中的所有对象全部更新,
models.User.objects.filter(id=edit_id).update(username=username)
models.User.objects.filter(id=edit_id).first().update(username=username) # 报错
(四)查
- filter括号内可以放多个关键字参数,关键字参数之间是and关系,返回的是一个“列表”
- all:查询所有
data = models.User.objects.filter(username=username)
user_list = models.User.objects.all()
# 相当于 models.User.objects.filter()
(day50)二、文件配置、ORM的更多相关文章
- mysql之存储引擎和文件配置
(查看系统服务,在运行里输入services.msc) 补充:将mysql做成系统服务:mysqld --install 取消:mysqld --romove 在服务中可以直接鼠标操作mysql服务的 ...
- (day53)五、模型层(ORM)、settings文件配置
目录 一.settings配置 (一)测试文件配置 (二)查看对应sql语句 二.模型表数据的增删改查 (一)创建数据 (1)create方法 (2)利用对象的绑定方法 (二)修改数据 (1)利用qu ...
- Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)
Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- Django基础二静态文件和ORM
Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...
- HttpResponse,render,redirect,静态文件配置,request对象方法,pycharm连接MySQL,django连接MySQL,django ORM
HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 rend ...
- 基于python的接口测试框架设计(二)配置一些参数及文件
基于python的接口测试框架设计(二)配置一些参数及文件 我这里需要基于我的项目配置的主要是登陆参数.以及baseURL ,把这些放在单独的文件里 毕竟导入的时候方便了一些 首先是url 图略 建 ...
- Django框架(二)-- 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get
一.app 在Django中,APP可以用以下类比 大学 --------------------项目 计算机学院------------app01 土木学院 ------------ app02 1 ...
- Django框架(二)—— 基本配置:app注册、模板配置、静态文件配置、数据库连接配置post和get
目录 app注册.模板配置.静态文件配置.数据库连接配置post和get 一.app 二.模板配置 三.静态文件配置 四.数据库连接配置 五.get请求和post请求 六.新手三件套 七.登录功能案例 ...
随机推荐
- 80道最新java基础部分面试题(六)
自己整理的面试题,希望可以帮到大家,需要更多资料的可以私信我哦,大家一起学习进步! 59.ArrayList和Vector的区别 答: 这两个类都实现了List接口(List接口继承了Collecti ...
- npm简单实用
npm包管理工具 npm可以理解为前端的maven,一个包的管理工具 1. 查看npm和node版本 node -v npm -v 2. 初始化项目 npm init 默认配置初始化项目 npm in ...
- Python连载42-异步协程函数
一. asyncio 1.python3.4开始引入标准库之中,内置对异步io的支持 2.asyncio本身是一个消息循环 3.步骤: (1)创建消息循环 (2)把协程导入 (3)关闭 4.举例: ...
- 新手入门:python的pip安装(二)
pip的安装以及使用pip安装包 —–安装python的时候勾选了下载pip,不知道为什么没下载.然后就偷懒想着需要哪个包再单独去下载就好了,然后!!!每个包都会出点小问题,导致我这个初学者有三天不想 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 8
23.5.2 架构详解 本例的实现最重要的就是服务层的设计,有两个配置文件config.php和api.php,其中文件config.php是全局的配置文件,用于整个程序全局需要的参数设置.可以根据 ...
- 【mysql报错】[Err] 1248 - Every derived table must have its own alias
当我运行一条联合查询的sql语句时报如下错误: [Err] 1248 - Every derived table must have its own alias,大概意思是每一张派生表必须要有自己的别 ...
- 【计算机网络】HTTPS协议的传输细节及过程分析
1. 介绍一下HTTPS协议? 1.1 基本概念 http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输. 1.2 密码学基础 明文: 明文指 ...
- 微信小程序反编译
看到一个有意思的小程序,想了解是如何实现的,于是找了反编译方法. 安装adb驱动 百度安装adb驱动, 设计设置开发者模式,连接电脑. -> % adb devices List of devi ...
- sql server相邻表记录交换(单双两两交换)
在博客园的博问中看到了一个这样的提问:一个表中有id和name两个字段,id是连续非空不重复的,想要交换相邻表记录的name值(单双两两交换). 另外,如果最后的单独行没有对应的下一行匹配记录的话,就 ...
- LinqMethod 实现 LeftJoin
LinqMethod 实现 LeftJoin Intro 有时候我们想实现 leftJoin 但是 Linq 提供的 Join 相当于是 INNER JOIN,于是就打算实现一个 LeftJoin 的 ...