Django静态文件配置-request方法-ORM简介-字段的增删改查
app的创建注意事项:
在Django新创建的app要在seetings.py中添加注册,才会生效
创建app:django-adminapp an startapp app名称 或者 python3 mansge.py startpp名称

手动创建的app不会自带存放html的templates文件夹,需要手动创建

Django静态文件配置
对于前端已经写好了的文件,我们只是拿过来使用,那么这些文件都可以称之为"静态文件";
静态文件可以是:boostrap一类的前端框架,已经写好了的图片、css、js。
静态文件默认是存放在static文件下,项目中没有的话,需要手动创建。

static文件夹中默认会默认创建的子文件夹
css文件夹 当前网站所有的样式文件
js文件 当前网站所有的js文件
img文件 当前网站所有的图片文件
其他(前端框架代码 第三方插件代码...)
用户可以访问的资源默认都在url中,只有url中开设的资源才能访问到,需要手动指定是否需要暴露给用户
静态文件的配置:

Django默认是支持自动重启代码的,新修改的后端内容只需要多刷新网页几次即可;
机制:实时监测文件代码变化 只要有变化,就会自动重启,可能你的代码还没有写完 这个时候就会自动报错
静态文件接口前缀“动态解析”
{ % load static %} 利用解析器 动态获取接口前缀

如果访问的ulr资源明明存在却报如下错误时,需要把seething.py中的

可以通过method改为post请求
改成post请求之后 需要去settings文件中注释掉一个中间件

Request对象和Response对象
Request对象
当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
请求相关的常用值
path_info 返回用户访问url,不包括域名。
method 请求使用的HTTO方法的字符串表示,全大写表示。
GET 包含所有的HTTP GET参数的字典对象。
POST 包含所有HTTP POST 参数的类字典对象。
body 请求体,byte类型request.POST的数据就是从body内取到的。
例如常用的方法:

注意事项:
request.method获取请求方法 对数据的处理 不单单只有wsgiref模块 django后端也进行了大量的数据处理
GET
request.GET获取前端get提交的数据(就类似于是一个大字典)
取值
request.GET.get('username') # 虽然value是一个列表 但是默认只取列表最后一个元素
# 强烈不建议你使用中括号的形式取值 # 如果想直接把列表全部取出(******)
request.GET.getlist('hobby')
POST
request.POST获取前端post提交的数据(就类似于是一个大字典)
取值
request.POST.get('username') # 虽然value是一个列表 但是默认只取列表最后一个元素
# 强烈不建议你使用中括号的形式取值 # 如果想直接把列表全部取出(******)
request.POST.getlist('hobby')
上传文件例子
def upload(request):
"""
保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
:param request:
:return:
"""
if request.method == "POST":
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["file"].name
# 在项目目录下新建一个文件
with open(filename, "wb") as f:
# 从上传的文件对象中一点一点读
for chunk in request.FILES["file"].chunks():
# 写入本地文件
f.write(chunk)
return HttpResponse("上传OK")
Response对象
HttpResponse类位于django.http模块中;用于获取或者传递字符串的方法。
传递字符串
from django.http import HttpResponse
response = HttpResponse("Here's the text of the Web page.")
response = HttpResponse("Text only, please.", content_type="text/plain")
属性:
HttpResponse.content:响应内容
HttpResponse.charset:响应内容的编码
HttpResponse.status_code:响应的状态码
Django连接数据库MySQL

建立连接

建立连接后也可以直接操作表的字段及属性相关操作
修改默认连接数据库的配置

修改完后需要在app.py文件下的__init__.py中修改添加以下两句话,才算是完全配置好

Django中的ORM
ORM对象关系映射
表 >> 类
一条条记录 >> 对象
字段对应的值 >> 对象的属性
直接在models,py中书写

创建好模型表后需要执行数据的迁移命令,也可以快捷方式执行窗口(Tools)
python3 manage.py makemigrations # 仅仅是在小本本上(migrations文件夹)记录数据库的修改 并不会直接操作数据
python3 manage.py migrate # 将数据库修改记录 真正同步到数据库
注意:只要动了models中跟数据库相关的代码 就必须重新执行上面的两条命令 缺一不可(***)

字段的增删改查
"""增
当一张表已经创建出来之后
后续还想添加字段, 可以有两种方式
1.给新增的字段设置默认值
addr = models.CharField(max_length=32, default='China') # default该字段默认值 2.给新增的字段设置成可以为空
age = models.IntegerField(null=True) # 该字段允许为空 删(慎用)
删除字段:直接在models.py中注释该字段;然后重新执行两条命令即可
注意: 执行完之后
表中该字段所对应的所有的数据全部删除
并且一般情况下,基本是不会用到真正意义上的删除 """
必须设置字段的属性默认值:true、null等

数据的增删改查
# 1.查询数据
# 1.1 get()
# user_obj = models.User.objects.get(username=username)
# """
# get方法 能够直接拿到数据对象本身 但是 当查询条件不存在的时候 会直接报错 所有不推荐使用
# """
# print(user_obj)
# print(user_obj.username)
# print(user_obj.password) # 1.2 filter() 过滤筛选
# res = models.User.objects.filter(username=username,password=password)
"""
filter查询出来的结果是一个"列表 列表内放的才是一个个的数据对象本身"
当查询条件不存在的时候 不会报错 只会返回一个空列表
filter括号内 支持写多个参数 并且参数与参数之间是and的关系
"""
# print(res.query) # 只有querySet对象才可以直接点query查看年内部对应的sql语句
# 1.filter拿到的结果就是一个querySet对象(你现在只需要知道filter拿到的结果就能够点query查看sql语句)
"""
# SELECT `app01_user`.`id`, `app01_user`.`username`, `app01_user`.`password`
# FROM `app01_user`
# WHERE (`app01_user`.`username` = jason AND `app01_user`.`password` = 123)
#
""" # print(res)
# user_obj = res[0:2]
"""
querySet对象 你可以吧它当做列表操作 取值也可以通过索引取(querySet只支持正数索引 不支持负数),还支持切片操作(切出来的结果还是一个querySet对象)
但是不推荐你这么做
"""
user_obj = models.User.objects.filter(username=username).first() # 拿列表中第一个数据对象
"""
不推荐你使用索引取值 原因在于一旦没有任何数据 再索引取值会报错
但是如果用first虽然内部也是按照索引取值 但是没有数据 也不会报错 返回的是None
"""
# print(user_obj,user_obj.username,user_obj.password)
查:
from app01 import models models.User.objects.all() # 直接拿所有的数据 models.User.objects.get(username=username) res = models.User.objects.filter(username=username)
res.query user_obj = res.first()
增
1、models.User.objects.create(Username=uername,password=password) 2、user_obj = models.User(username=uername,passeord=password)
user_obj.save()
删除
models.User.objects.firter(筛选的条件).delete()
修改
models.User.objects.filter(条件).update()
Django静态文件配置-request方法-ORM简介-字段的增删改查的更多相关文章
- Django静态文件配置 request对象 Django操作MySQL
Django中的文件介绍 render.HttpResponse和redirect 当我们想起手写一个项目,创建好应用并且注册之后,在urls.py文件先导入app文件夹下migrations下的vi ...
- django静态文件配置
开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...
- Django——静态文件配置
本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...
- 55 Django静态文件配置
一.Django静态文件配置 1.项目文件夹,新建一个文件夹statics 文件夹 2.在配置文件settings.py中,配置: 文件中有第句: STATIC_URL = '/static/'#静态 ...
- 048:ORM模型基本的增删改查操作
ORM对数据库的增删改查基本操作: 创建模型如下: 基本的增删改查如下:
- Django 静态文件配置 (Nginx)
初学Django,在访问静态文件时候遇到很多误区,一直配置不成功,在此记录一下. Django静态文件访问分为两种:一种是Debug模式下,测试开发网站时对静态文件的访问,一种是实际生产环境中对静态文 ...
- Django中ORM对数据库的增删改查
Django中ORM对数据库数据的增删改查 模板语言 {% for line in press %} {% line.name %} {% endfor %} {% if 条件 %}{% else % ...
- Django中ORM对数据库的增删改查操作
前言 什么是ORM? ORM(对象关系映射)指用面向对象的方法处理数据库中的创建表以及数据的增删改查等操作. 简而言之,就是将数据库的一张表当作一个类,数据库中的每一条记录当作一个对象.在 ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
随机推荐
- oracle提交commit后回退恢复
-------------------------------------------------------begin---------------------------------------- ...
- 十七、CI框架之数据库操作insert用法
一.代码如下: 二.我们访问一下页面 三.查看数据库,已经插入了一条数据 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- 吴裕雄--天生自然C++语言学习笔记:C++ 常量
常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,可分为整型数字.浮点数字.字符.字符串和布尔值. 常量就像是常规的变量,只不过常量的值在定义后不能进行 ...
- C#类、对象、方法和属性详解
C#类.对象.方法和属性详解 一.相关概念: 1.对象:现实世界中的实体(世间万物皆对象) 2.类:具有相似属性和方法的对象的集合 3.面向对象程序设计的特点:封装 继承 多态 4.对象的三要素:属性 ...
- AJAX(阿贾克斯)的简单应用
1.ajax 对象的属性说明(常用的) (1)open(method,url,boolean);创建请求,method :填请求类型(get post),url :请求的地址, boolean:tru ...
- [CQOI2016]K远点对(KD-Tree)
暴力的做法应该是这样的,维护大小为k的堆,每次插入两点间距离并弹出堆顶. 然后这个做法显然是可以KD-Tree优化的,建立KD-Tree,然后如果该平面内最远点小于堆顶,则直接退出.就当做是复习很久没 ...
- continue break
#!/bin/bashfor i in `seq 10`do if ((i%3==0)) thenecho !! continue fiecho $idone 结果: ...
- 关于HackerRank的Day 8 的思考——input
Day 8 主要是对字典的一些基本用法做操作. 题干大概是:给定一个 n ,建立一个包含 n 个人的电话簿,然后有一个查询功能.当然,很简单,但是在我对搜索词的输入时,它提示我:EOF when re ...
- 【2017西安邀请赛:A】XOR(线段树+线性基)
前言:虽然已经有很多题解了,但是还是想按自己的理解写一篇. 思路:首先分析题目 一.区间操作 —— 线段树 二.异或操作 —— 线性基 这个两个不难想,关键是下一步的技巧 “或”运算 就是两个数的二进 ...
- 翻译——3_Gaussian Process Regression
使用不同的机器学习方法进行预测 续上篇2_Linear Regression and Support Vector Regression 高斯过程回归 %matplotlib inline impor ...
