线下---复习day03
django回顾
1 web应用,http协议,web框架
# ip+端口号唯一确定一个应用
# web框架是什么
# http协议
# wsgi协议,wsgiref,uWSGI分别是什么?
wsgi协议是py中的一个协议:规定了如何拆,封http协议
#模板文件是在什么时候完成渲染的?
在后端渲染完,只要出了django框架,就是完整的html,css和js
2 django请求生命周期

3 路由控制
# django是一个同步框架
# 最新版本3.x
# URL与要为该URL调用的视图函数之间的映射表
# 1.x 和2.x版本路由稍微不同
1.x:url
2.x:path,re_path(原来的url)
# 写法
from django.conf.urls import url
urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
# APPEND_SLASH 的用法
#
# 有名分组
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
# 无名分组
re_path(r'^articles/([0-9]{4})/$', views.year_archive),
# 路由分发
path('app01/', include(urls)),
#反向解析
###视图函数中
from django.shortcuts import reverse
url=reverse('test',args=(10,20)) # test是在url内配置的别名
###在模板中使用
{% url "别名" 参数 参数%}
# 名称空间(了解)
#2.x的path内置了几个转换器
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
# 2.x的path自定义转换器(了解)
4 视图层
#response对象: 三件套+JsonResponse 本质都是HttpResonse
#request对象:
request.GET:http://127.0.0.1:8000/index/123?name=lqz&age=18 name=lqz&age=18会被转成字典,放到GET中
request.POST:urlencoded,formdata两种编码的数据会被放在这个字典中
request.META:HTTP请求的其他东西,放在里面,入客户端ip地址:REMOTE_ADDR
request.FILES:上传的文件
request.session:用的session
# 301 和302的区别
# JsonResponse
# CBV和FBV
#文件上传(form表单中指定编码方式)
def index(request):
if request.method=='GET':
return render(request,'index.html')
else:
myfile=request.FILES.get('myfile') #文件对象
print(type(myfile))
from django.core.files.uploadedfile import InMemoryUploadedFile
name=myfile.name
print(myfile.field_name)
with open(name,'wb') as f:
for line in myfile:
f.write(line)
return HttpResponse('文件上传成功')
5 模板层
模版语法重点:
变量:{{ 变量名 }}
1 深度查询 用句点符
2 过滤器
标签:{{% % }}
内置过滤器:
{{obj|filter__name:param}} 变量名字|过滤器名称:变量
重点:safe
xss攻击
<a href="https://www.baidu.com">点我<a> 如果原封不动的显示在html中,一定是a标签,html的特殊字符
for标签
if标签
with标签
# {% csrf_token%}
{% csrf_token%}
{{ csrf_token }}
<input type="hidden"value="sadfasdfasdf">
# 模板的导入和继承
include
extend:先用{% block title %},
再用{% extends "base.html" %}
{% block content %}
自己的内容
{% endblock %}
6 模型层
# 使用orm的步骤
1 在setting中配置(连数据库的地址,端口)
2 在 __init__中使用pymysql
3 在models.py中写类,写属性
4 使用:数据库迁移的两条命令
python3 manage.py makemigrations #记录
python3 manage.py migrate # 真正的数据库同步
5 在视图函数中使用orm
# orm的api
<1> all(): 查询所有结果
<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> order_by(*field): 对查询结果排序('-id')
<6> reverse(): 对查询结果反向排序
<8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<9> first(): 返回第一条记录
<10> last(): 返回最后一条记录
<11> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<14> distinct(): 从返回结果中剔除重复纪录
# 下划线查询
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__gte=100)
Book.objects.filter(price__lte=100)
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__contains="python")
Book.objects.filter(title__icontains="python")
Book.objects.filter(title__startswith="py")
Book.objects.filter(pub_date__year=2012)
#删除
对象.delete() #删一条
queryset对象.delete() # 删多条
#更新
Book.objects.filter(title__startswith="py").update(price=120)
作业:
1 链式调用(jq),用python实现链式调用(对象.hello.world.add())
2 关键字过滤的标签
3 常用(非常用)字段和参数,Django-model进阶(https://www.cnblogs.com/liuqingzheng/p/9506212.html)
线下---复习day03的更多相关文章
- 线下---复习day04---作业
1 学的不好的同学:用ajax提交一个json格式数据,返回一个json格式数据,console.log打印出来 2 通过ajax上传一个文件并保存起来,前端接收到,弹窗说上传成功 urls.py f ...
- 线下---复习day04
目录 1 Django与Ajax 2分页器组件 3 forms组件 4cookie与session组件 5中间件组件 6Auth模块 作业: 1 Django与Ajax # 通过ajax向https: ...
- 线下---复习day02
目录 1 后续课程安排 2 作业讲解 3 python中的魔法方法 setattr,getattr,setitem,getitem演示 with 上下文管理器 eq 4 cookie,session, ...
- 线下---复习day01
目录 1 个人介绍 2 关于编辑器 3 基础串讲 3.1 解释型和编译型 3.2 数据类型 3.2.1 一切皆对象 3.2.1 深浅copy 3.2.3 可变类型与不可变类型 3.3 字符编码 3.4 ...
- 这个立冬,我线下面基了一位TMD高级专家,太牛逼了!
立冬刚过,迎面而来的是一股寒气.天气如此,市场亦是如此.昨天周五,和1个认识的技术专家老刘约饭,也算是线下面基,增进感情.每年我都要向比我高阶的朋友讨教.不由自主聊到了他的职场生涯.鱼哥一直以为自己命 ...
- YY一下微信线下支付的场景
在上一篇文章里面提到了 <跨行清算的实现原理>,这次来分析一下线下支付的场景和流程. 今天看到一篇文章:http://www.huxiu.com/article/23248/1.html? ...
- ABP(现代ASP.NET样板开发框架)主题线下交流会(上海)开始报名了!
点这里进入ABP系列文章总目录 ABP主题线下交流会(上海)开始报名了 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称.它是采用最佳实践和流行技术 ...
- 微信公众平台"微信连Wi-Fi"功能来了 线下微信增粉利器
微信连Wi-Fi功能在第三方开发者和服务商已经有出现了,但有些成本相对会高些.近日微信公众平台新添了一个功能插件“微信连Wi-Fi”,已有微信认证过的公众号即可申请开通.赶紧去布局这个线下微信增粉利器 ...
- 从CR线下活动学到的:如何组织一个小的线下活动
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf 周末在腾讯组织了GR,活动达到了预期的收获,从这次活动我主 ...
随机推荐
- android中shape的使用介绍-2环形
匿名内部类不能修改外部类的临时变量,但属性变量可以访问 参考:http://blog.csdn.net/north1989/article/details/52939888
- 网络编程-Netty-Reactor模型
目录 # 摘要 高性能服务器 Reactor模式 Reactor单线程模型设计 Reactor多线程模型设计 主从Reactor多线程模型设计 Netty Reactor模型设计 参考 你的鼓励也是我 ...
- TensorFlow开发者证书 中文手册
经过一个月的准备,终于通过了TensorFlow的开发者认证,由于官方的中文文档较少,为了方便大家了解这个考试,同时分享自己的备考经验,让大家少踩坑,我整理并制作了这个中文手册,请大家多多指正,有任何 ...
- SQL Msg 18054, Level 16, State 1
今天接到一个看起来很简单的任务--修改数据库中的一项数据.听起来很简单吧. 在网上搜索了一下,很快就拼凑出了相应的 SQL 语句: UPDATE [suivi].[dbo].[numSerie]SET ...
- (八)postman请求的form-data、x-www-form-urlencoded、raw、binary的区别
原文链接:https://blog.csdn.net/jiadajing267/article/details/87883725 1.form-data 等价于http请求中的multipart/fo ...
- CentOS Linux release 7.7.1908 (Core)--rabbitmq用户创建以及相关防火墙端口开启问题
增加访问用户,默认用户guest只能本地访问. #添加用户 rabbitmqctl add_user 账号 密码 rabbitmqctl add_user admin admin #分配用户标签(ad ...
- css3动画的实例讲解
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- MongoDB——基本使用及集群搭建
文章目录 什么是MongoDb? 基本概念 与关系型数据库的比较 Mongo的高效性 文件存储 基本使用 启动/连接服务 基础操作命令 高可用集群搭建 概念 环境准备 实践 应用场景 总结 什么是Mo ...
- 001.OpenShift介绍
一 OpenShift特性 1.1 OpenShift概述 Red Hat OpenShijft Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT ...
- 【String注解驱动开发】面试官让我说说:如何使用FactoryBean向Spring容器中注册bean?
写在前面 在前面的文章中,我们知道可以通过多种方式向Spring容器中注册bean.可以使用@Configuration结合@Bean向Spring容器中注册bean:可以按照条件向Spring容器中 ...