Day74
Django框架之视图函数(day74)
一 作业相关
urlpatterns = [
url(r'^$',views.book), #根路径,响应到指定视图函数:
.....
url(r'',views.errors), #没有配置的路径,响应到错误的视图函数:
]
二 虚拟环境创建方法
1 用pychanrm创建--->files-->newproject--->选择虚拟环境
2 settings-->project创建
3 用命令行创建,详见https://www.cnblogs.com/liuqingzheng/p/9508851.html
三 django 2.0和django 1.0 路由层区别
1 url,re_path分组分出来的数据,是字符串*****
2 re_path:跟1.0的url用法相同
3 path:传的路径,是准确路径
4 5个转换器-->path('test/<path:year>', views.re_test),
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
5 自定义转换器
1 定义一个类:
class MyCon:
regex = '[0-9]{4}' # 写一个正则表达式
def to_python(self, value): # 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
return int(value)
def to_url(self, value): # 反向解析用的
return '%04d' % value
2 from django.urls import register_converter
register_converter(MyCon,'yyy') #重命名
3 path('test/<yyy:year>', views.re_test,name='test'),
6 补充: 在settings中如果设置: APPEND_SLASH=False 为假,不会加反斜杠
四 视图层之HttpRequest对象
1 前台Post传过来的数据,包装到POST字典中
# request.POST
2 前台浏览器窗口里携带的数据,包装到GET字典中
# request.GET
3 前台请求的方式
# request.method
4 post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
# request.body
5 取出请求的路径,取不到数据部分
# print(request.path)
6 取出请求的路径,能取到数据部分
# print(request.get_full_path())
# print(request.META)
五 视图层之HttpResponse对象
三件套:render,HttpResponse,redirect
render函数:
temp=Template('<h1>{{ user }}</h1>')
con=Context({'user':'lqz'})
ret=temp.render(con)
return HttpResponse(ret)
#等效于上面四步:return render(request,'index.html')
六 视图层之JsonResponse对象
1 导入:from django.http import JsonResponse
2 视图函数中:
def test(request):
import json
# dic={'name':'lqz','age':18}
ll = ['name', 'age']
# 把字典转换成json格式,返回到前台
# return HttpResponse(json.dumps(dic))
# 把列表转换成json格式,返回到前台
# return HttpResponse(json.dumps(ll))
# 把字典转换成json格式,返回到前台
# return JsonResponse(dic)
# 报错,默认不支持列表形式
# return JsonResponse(ll)
# 支持列表形式
return JsonResponse(ll,safe=False)
七 CBV和FBV
1 CBV基于类的视图
1 路由层:url(r'^test/', views.Test.as_view()),
2 视图层
导入:from django.views import View
写一个类:
class Test(View):
def get(self, request): #一定要传request对象
return HttpResponse('get-test')
def post(self, request):
return HttpResponse('post-test')
2 FBV基于函数的视图
八 简单文件上传
1 前端部分:
<form action="" method="post" enctype="multipart/form-data">
{#<form action="" method="post" enctype="application/x-www-form-urlencoded">#}
<input type="file" name="myfile">
<input type="text" name="password">
<input type="submit" value="提交"></form>
2 后台部分:
def fileupload(request):
if request.method=='GET':
return render(request,'fileupload.html')
if request.method=='POST':
print(request.FILES)
print(type(request.FILES.get('myfile')))
myfile=request.FILES.get('myfile') # 从字典里根据名字,把文件取出来
from django.core.files.uploadedfile import InMemoryUploadedFile
name=myfile.name # 文件名字
with open(name,'wb') as f:
# for line in myfile.chunks():
for line in myfile:
f.write(line)
return HttpResponse('ok')
3 补充:编码方式multipart/form-data或者:application/x-www-form-urlencoded传的数据,都可以从POST中取出来
九 作业:
1 手动创建虚拟环境--用命令
2 往前台返回user字典:[{name:lqz,age:18},{name:lqz2,age:18}]
3 写一个文件上传:如果文件名字重复,不要覆盖,并且放到项目根路径的media文件夹下
Day74的更多相关文章
- python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)
昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...
- day74天中间件介绍
一. importlib settings 执行结果: 两个process_request process_response按照注册顺序的倒叙进行执行 PROCESS_VIEW Process_v ...
- day74 bbs项目☞点赞与评论
目录 一.文章详情展示 1 将侧边栏做成inclusion_tag 二.点赞点踩功能 三.评论功能 整体总结: 在出现bug的时候,先判断是前端bug还是后端bug,再判断bug错误类型,以及报错信息 ...
- day74:drf:drf其他功能:认证/权限/限流/过滤/排序/分页/异常处理&自动生成接口文档
目录 1.django-admin 2.认证:Authentication 3.权限:Permissions 4.限流:Throttling 5.过滤:Filtering 6.排序:OrderingF ...
- Linux下批量修改文件名方法
对于在Linux中修改文件名的方式一般我们会用mv命令进行修改,但是mv命令是无法处理大量文件修改名称. 但是在处理大量文件的时候该如何进行批量修改呢? 方法一:mv配合for循环方式进行修改 [ro ...
- 100 天从 Python 新手到大师
Python应用领域和就业形势分析 简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支 ...
- 中间件详解,Django复习
day74 2018-05-21 课程安排周一: 中间件 auth模块+分析BBS项目需求(小组讨论把表结构设计出来) 1. 今日内容 中间件:http://www.cnblogs.com/liwen ...
- day 74ajax
w3school地址ajax教程 ajax定义: AJAX(Asynchronous Javascript And XML) 翻译成中文就是'异步JavaScript和XML',也就是使用JavaSc ...
随机推荐
- css flex方法标题左右两边平衡线
<html> <div class="title"> <div class="line"></div> < ...
- ctrl+c以及写操作失败和flush
.kill命令可以带信号号码选项,也可以不带.如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源.也可以用kill向进程发送特定的信号 ...
- 不同组的id列表的汇总对比
需求: 三个不同的dfs中存在不同的多个节点id,现在需要求出不同的dfs之间的节点对应关系,比如,哪些节点在某一个dfs,但是不在另一个dfs中 思路: 一. 如果是单纯计算dfs中节点数量,则可以 ...
- python之 类对象 类方法 实例对象 实例方法 静态方法
实例对象1. 创建的时间:使用 类名()的时候,就创建一个实例对象2. 实例属性:怎样添加 只要是一个变量能够指向这个实例对象,那么这个变量.xxxx = 111就是给其添加一个实例属性 特点: 跟着 ...
- centos7通过yum安装mysql8
1.检查是否安装mariadb rpm -qa | grep mariadb 若有会显示 mariadb-libs-5.5.56-2.el7.x86_64 2.卸载mariadb rpm -e --n ...
- asd短片数篇
黄乙己 黄乙己是站着AK而正常的唯一的人.他身材挺高大:蜡黄脸色,眼角间时常夹着些饼干屑:一副黑色的眼镜.虽然挺正常,可是他有良好的饮食习惯,似乎十多个月都是吃的牛奶泡饭,也没有洗饭盒.他对人说话,总 ...
- ssm项目导入activiti依赖后jsp页面el表达式报错
错误原因:Tomcat8.x与activiti6.0依赖冲突导致 解决方法: 1.修改tomcat版本 2.在pom.xml中修改 在依赖中把 <dependency> <group ...
- 软件开发者路线图梗概&书摘chapter4
准确的自我评估:不是超出平庸,而是度量能力,做到更好,谦卑 1.只求最差:学期曲线趋平 更好团队→提供帮助+准确的自我评估 列举团队并排序 2.找人指导:学习前头的人,寻找师傅 加入社区,寻找活跃的老 ...
- Git 概念
Git 概念 一.Git 工作流程 ~ Workspace:工作区 ~ Index/ Stage:暂存区 ~ Repository:仓库区(或本地仓库) ~ Remote:远程仓库 工作区 进行开发改 ...
- 快速简单搭建wordpress平台
公司一直没有文档平台,于是想弄一个,弄过github平台的,但是都没用上,虽然这个搭建出来也没用上,还是花了时间才弄出来的,也许下次有用的时候,可以拿来就用 安装Wordpress的基础环境要 ...