首页 > 其他 > 详细

3.基础知识点回顾

时间:2020-07-03 10:44:21      阅读:62      评论:0      收藏:0      [点我收藏+]

一、web应用

1.1、web应用

? 应用程序有两种的模式,分别是b/s以及c/s。

? b/s为浏览器与服务端之间的应用程序,而c/s为客户端与服务端之间的程序

? web就是b/s模式的应用程序,他只需要用户少量硬盘的资源,其余都在服务端之上,并且不用更新

? 由于完全是远距离传输,因此对浏览器以及互联网的连接比较依赖

1.2、web框架

? Python的web框架主要要三种:分别是Django、flask、tornado

? Django的特点是大而全,自带的动能比较多,但是过于笨重

? flask的特点是小而精,第三方模块比较多,比较依赖于第三方模块

? tornado的特点是异步非阻塞,支持高并发

1.3、wsgi协议

? wsgi协议是Python种的一个协议,规定了怎么拆封HTTP协议

? HTTP协议数据传输使用的是明文,HTTPS协议数据传输使用的是密文

1.4、模板文件的渲染

? models在后端渲染完,只要出了Django框架,就是完整的HTML,CSS,JS

二、路由控制

2.1、Django的框架类型

? Django是一种同步框架,其中1.x版本和2.x版本在路由URL上是不同的

? 1.x版本上是使用URL,2.x上使用的是path

2.2、Django的路由写法

? 先导入URL,其中参数(传递给视图函数的默认形式,使用字典类型)和别名可以不写

? from Django.conf.urls import url

? urlpatterns = [ url(正则表达式,views视图函数,参数,别名)]

2.3、APPEND_SLASH

? Django setting.py配置中没有append_slash,其中Django默认append_slash = Ture,主要作用是在URL的末尾默认加入/,如果将append_slash = False加入setting.py中,就能取消/

2.4、有名分组和无名分组

? 有名分组和无名分组主要区别在于是否有(?p

? 有名分组:re_path(r^article/(?p[0-9]{4})/$,views.year_archive),

? 无名分组:re_path (r^article/(0-9){4}/$views.year_archive)

2.5、路由分发

? 将一个总路由分发给多个子路由

? 路由分发:url(r‘^app01/‘,include(app01.urls))

? 子路由连接视图views:from django.conf.urls import url

? from app01 import views
? urlpatterns = [ url(r‘^reg/‘,views.reg)]

2.6、反向解析

? 反向解析是同过后端向前端传递变量,通常传递的变量数据是主键值,用来处理数据的增删改查

? 使用的是reverse模块

		from django.shortcuts import reverse

?		url = reverse(‘test‘,args=(10,20))     通过URL别名的一致,URL传递变量数据

2.7、名称空间

? 由于子路由中,可能会出现相同的URL的别名,而反向解析是通过URL中的别名进行定位,因此Python建立了名称空间保证了互不干扰。

? 为了更好的识别子路由中对应的URL,因此在别名前添加子路由的信息,使其具有唯一性

	urlpatterns = [url(r‘^reg/‘,views.reg,name=‘app01_reg‘)]

2.8、内置转换器

? Django2.x不支持URL,只能使用path

? path不支持正则,但是能用五种转换器,将进行限制path的第二路由,分别是:

? 1.str:可以匹配除了/以外的非空字符,为默认形式

? 2.int:匹配正整数,包括0

? 3.slug:匹配字母、数字、横杠、下划线组成的字符串

? 4.uuid:匹配格式化的uuid,例如: 075194d3-6885-417e-a8a8-6c931e272f00

? 5.path:匹配非空字符串

path(‘index/<int:id>‘,index)

2.9、自定义的转换器

class MonthConverter:
    regex=‘\d{2}‘ # 属性名必须为regex
    def to_python(self, value):
        return int(value)
    def to_url(self, value):
        return value # 匹配的regex是两个数字,返回的结果也必须是两个数字    
    from django.urls import path,register_converter
    from app01.path_converts import MonthConverter
    # 先注册转换器
    register_converter(MonthConverter,‘mon‘)
    from app01 import views
    urlpatterns = [
    path(‘articles/<int:year>/<mon:month>/<slug:other>/‘,     views.article_detail, name=‘aaa‘),

]

三、视图层

3.1、response对象

? 视图层响应对象的三种方式:分别是:

? 1.HttpResponse() 返回字符串类型

? 2.render() 返回HTML页面,并且在返回浏览器前还可以给HTML传值

? 3.redirect() 重定向

? 视图函数必须要返回一个HttpResponse

3.2、Jsonresponse对象

? 前端序列化:json.stringify() 前端反序列化:json.parse()

? 后端序列化:json.dumps() 后端反序列化:json.loads()

? 从后端向前端发送json格式的字符串有两种方式,一个是使用json.dumps()进行序列化,一个时使用Jsonresponse对象,进行序列化

import json
data = {‘name‘:‘ab‘}
return HttpResponse(json.dumps(data))    #第一种
from django.http import JsonResponse
data1 = {‘name‘:‘ac‘}
return JsonResponse(data1,safe = False)		#第二种

3.3、request对象

? request对象的使用方法:

? request.method == :获取请求方式

? request.post:只能获取普通的键值对数据,不能获取文件

? request.get:获取get请求

? request.files:获取文件

? request.body:获取浏览器发过来的数据

? request.path:只能获取路由,不能获取路由后面的参数

? request.path_info :只能获取URL,不能获取路由后面的参数

? request.get_full_path():获取URL后面完整的参数

3.4、301和302的区别

? 301为永久性的重定向,之前的路由已经失去

? 302位暂时性的重定向,之前的路由还在,只是暂时不能使用

3.5、CBV和FBV

3.5.1、CBV

? class base views 基础类视图

? 使用类的基础视图,需要先从view里面继承view

from django.views import view
class Mylogin(view):
	def get(self,request):
		return render(request,‘form.html‘)
	def post(self,request):
		return HttpRsponse(‘post方法‘)

3.5.2、FBV

? function base views 基础函数视图

? 使用函数的基础视图,视图函数中必须要传request

def index(request):
	return HttpResponse(‘index‘)

3.6、form表单的文件上传

def index(request):
	if request.method == ‘GET‘:
		return render(request,‘index.html‘)
	else:
		myfile = request.FILES.get(‘myfiles‘)
		from django.core.files.uploadedfile import InMemoryUploadedFile
		name = myfile.name
		with open(name,‘wb‘) as f:
			for line in myfile:
				f.write(line)
		return HttpResponse(‘文件上传成功‘)

?

?

3.基础知识点回顾

原文:https://www.cnblogs.com/jingpeng/p/13228220.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!