day69
1 路由层:
1简单配置
2无名分组
3有名分组
4反向解析--模板层,视图层
5路由分发 include
6名称空间
7伪静态
2 作业:
urlpatterns = [
url(r'^$',views.book),#根路径,响应到指定视图函数:
.....
url(r'',views.errors),#没有配置的路径,响应到错误的视图函数:
]
今日内容:
1 虚拟环境
1 用pychanrm创建--->files-->newproject--->选择虚拟环境
2 settings-->project创建
3 用命令行创建,详见https://www.cnblogs.com/liuqingzheng/p/9508851.html
2 django 2.0和django 1.0 路由层区别(*****url,re_path分组分出来的数据,是字符串)
-re_path:跟1.0的url用法相同
-path:传的路径,是准确路径
5个转换器-->path('test/<path:year>', views.re_test),
str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int,匹配正整数,包含0。
slug,匹配字母、数字以及横杠、下划线组成的字符串。
uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
path,匹配任何非空字符串,包含了路径分隔符(/)(不能用?)
-自定义转换器
1 定义一个类:
class MyCon:
# 写一个正则表达式
regex = '[0-9]{4}'
# 匹配出來的数据,会传到这里,retrun回去的,会被视图函数接收
def to_python(self, value):
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'),
2.1补充:
# 为假,不会加反斜杠
# APPEND_SLASH=False
3 视图层之HttpRequest对象
# 前台Post传过来的数据,包装到POST字典中
# request.POST
# 前台浏览器窗口里携带的数据,包装到GET字典中
# request.GET
# 前台请求的方式
# request.method
# post提交的数据,body体的内容,前台会封装成:name=lqz&age=18&sex=1
# request.body
# 取出请求的路径,取不到数据部分
# print(request.path)
# 取出请求的路径,能取到数据部分
# print(request.get_full_path())
# print(request.META)
4 视图层之HttpResponse对象
三件套:render,HttpResponse,redirect
render函数:
temp=Template('<h1>{{ user }}</h1>')
con=Context({'user':'lqz'})
ret=temp.render(con)
print(ret)
# return render(request,'index.html')
return HttpResponse(ret)
5 视图层之JsonResponse对象
-导入:from django.http import JsonResponse
-视图函数中:
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)
6 CBV和FBV
-基于类的视图
-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')
return HttpResponse('post-test')
-基于函数的视图
7 简单文件上传
前端:
<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>
后台:
def fileupload(request):
if request.method=='GET':
return render(request,'fileupload.html')
if request.method=='POST':
# FILES
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')
补充:*****编码方式multipart/form-data或者:application/x-www-form-urlencoded传的数据,都可以从POST中取出来
day69的更多相关文章
- day65——day69
目录 DAY65 课堂笔记 1.vue实例 2.插值表达式 3.文本指令 4.面向对象js 5.js函数补充 6.事件指令 7.属性指令 DAY66 课堂笔记 1.表单指令 2.条件指令 3.循环指令 ...
- python 全栈开发,Day69(Django的视图层,Django的模板层)
昨日内容回顾 相关命令: 1 创建项目 django-admin startproject 项目名称 2 创建应用 python manage.py startapp app名称 3 启动项目 pyt ...
- Django-model基础(Day69)
阅读目录 ORM 创建表(建立模型) 添加表记录 查询表记录 F查询与Q查询 修改表记录 删除表记录 数据库回顾:http://www.cnblogs.com/yuanchenqi/articles/ ...
- (day69)axios、配置ElementUI、配置jQuery和Bootstrap、Django中的CORS问题
目录 一.Vue的ajax插件:axios 二.Django中的CORS跨域问题 (一)同源策略 (二)解决方式(cors模块) 三.Vue配置ElementUI 四.Vue配置jQuery和Boot ...
- day69 cookie与session
目录 一.forms源码解析 二.cookie与session发展史 三.cookie操作 四.session操作 五.CBV如何添加装饰器 一.forms源码解析 # from组件的切入点是is_v ...
- day69:Vue:组件化开发&Vue-Router&Vue-client
目录 组件化开发 1.什么是组件? 2.局部组件 3.全局组件 4.父组件向子组件传值 5.子组件往父组件传值 6.平行组件传值 Vue-Router的使用 Vue自动化工具:Vue-Client 组 ...
- 100 天从 Python 新手到大师
Python应用领域和就业形势分析 简单的说,Python是一个“优雅”.“明确”.“简单”的编程语言. 学习曲线低,非专业人士也能上手 开源系统,拥有强大的生态圈 解释型语言,完美的平台可移植性 支 ...
- day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)
对象 关系 模型 wusir博客地址orm官网API总结 django官网orm-API orm概要: ORM 跨表查询 class Book(models.Model): title = mod ...
- day 69-70 一对一 一对多 多对一联表查询
day 69 orm操作之表关系,多对多,多对一 多对一/一对多, 多对多{类中的定义方法} day69 1. 昨日内容回顾 1. 单表增删改查 2. 单表查询API 返回QuerySet对象的: 1 ...
随机推荐
- python 递归和二分法
一 内置函数 1. revserd 翻转,返回的是迭代器 # 将 s 倒置 s = '不是上海自来水来自海上' # 方法一 print(s[::-1]) # 方法二 s1 = reversed(s) ...
- js-ES6学习笔记-module(1)
1.在 ES6 之前,社区制定了一些模块加载方案,最主要的有 CommonJS 和 AMD 两种.前者用于服务器,后者用于浏览器.ES6 在语言标准的层面上,实现了模块功能,而且实现得相当简单,完全可 ...
- 安装php扩展包
sudo apt-get install php5-gd curl libcurl3 libcurl3-dev php5-curl 重启Apache sudo service apache2 rest ...
- Css 基础知识(一)
1.Css概念 CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表),Css是用来美化html标签的,相当于页面化妆. ◆样式表书写位置 2. 选择器 2.1.写法 选 ...
- Django组件扩展 总结
1. Form组件扩展: 验证用户输入 obj = Form(reuest,POST,request.FILES) if obj.is_valid(): obj.clean_data else: ob ...
- VS插件VisualSVN v5.2.3.0 破解文件
分享一个VisualSVN v5.2.3的破解文件: >>>> 点此下载 <<<< 下载后,找到VisualSVN的安装目录,例如:C:\Program ...
- python编写脚本
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys import os from subprocess import Popen,PIPE c ...
- 使用 HPC Pack 为 Azure 中的 Windows HPC 工作负荷创建和管理群集的选项
利用 Microsoft HPC Pack 和 Azure 的计算与基础结构服务,创建和管理基于云的高性能计算 (HPC) 群集. HPC Pack 是在 Azure 和 Windows Server ...
- SQLServer中DataLength()和Len()两内置函数的区别(转载)
最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...
- 简单实现MySQL数据库的日志审计
时间 2018-12-23 08:01:11 FreeBuf 原文 https://www.freebuf.com/articles/es/192062.html 主题 MySQL 0×0 背景 ...