python学习第七十一天:django2与1的差别和视图

Posted luck_L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第七十一天:django2与1的差别和视图相关的知识,希望对你有一定的参考价值。

django1与2路由的差别

在django1中的url在django2中为re_path
django2中新增了path
    1.from django.urls import path
    2.不支持正则,精准匹配
    3.5个转换器(int,str,slug,path,uuid4.自定义转换器:
        1 写一个类:
		class Test:
			regex = ‘[0-9]{4}‘
			def to_python(self, value):
				# 写一堆处理
				value=value+‘aaa‘
				return value
			def to_url(self, value):
				return ‘%04d‘ % value
		2 from django.urls import register_converter
		3 register_converter(Test,‘ttt‘4 path(‘index/<ttt:year>‘, views.index,name=‘index‘),

MVC和MTV

    M          T                 V

	models	   template         views

	M          V                 C(路由+views)
	models    模板              控制器
	

其实MVC与MTV是一样的,django中为MTV,数据交互层,视图层以及控制层

视图层:request对象

request对象:
# form表单,不写method ,默认是get请求
#     1 什么情况下用get:请求数据,请求页面,
#     2 用post请求:向服务器提交数据
# request.GET  字典
# request.POST  字典
# 请求的类型
# print(request.method)
# 路径
# http://127.0.0.1:8000/index/ppp/dddd/?name=lqz
# 协议:ip地址和端口/路径?参数(数据)  
# print(request.path) -->/index/ppp/dddd/
# print(request.get_full_path()) -->/index/ppp/dddd/?name=lqz

三件套

render
HttpResponse
redirect

JsonResponse

向前端页面发json格式字符串
封装了json
from django.http import JsonResponse

dic={‘name‘:‘lqz‘,‘age‘:18}
li=[1,2,3,4]

return JsonResponse(li,safe=False)

CBV和FBV

CBVclass base view)和FBV(function base view)

cbv:

from django.views import View
class Test(View):
	def dispatch(self, request, *args, **kwargs):   # 分发
		# 可加逻辑判断语句
		obj=super().dispatch(request, *args, **kwargs)
		# 可加逻辑判断语句
		return obj
	def get(self,request):
		obj= render(request,‘index.html‘)
		print(type(obj))
		return obj
	def post(self,request):
		return HttpResponse(‘ok‘)

urls中:
re_path(r‘index/‘, views.Test.as_view()),

简单文件上传

html中:
<form action="" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="name">
密码:<input type="text" name="password">
文件:<input type="file" name="myfile">
<input type="submit">
</form>

viewsclass Cbv(View):
    def dispatch(self, request, *args, **kwargs):
        obj = super().dispatch(request, *args, **kwargs)
        return obj

    def get(self,request):
        return render(request,‘index.html‘)

    def post(self,request):
        aaa = request.FILES.get(‘myfile‘)
        with open(aaa.name,‘wb‘) as f:
            for line in aaa.chunks():
                f.write(line)
        return HttpResponse(‘ok‘)

以上是关于python学习第七十一天:django2与1的差别和视图的主要内容,如果未能解决你的问题,请参考以下文章

“全栈2019”Java第七十一章:外部类访问静态内部类成员详解

20165210 Java第七周学习总结

20172327 2018-2019-1 《程序设计与数据结构》第七周学习总结

Django与MySQL数据库版本兼容问题

20172333 2018-2019-1 《程序设计与数据结构》第七周学习总结

20172305 2018-2019-1 《Java软件结构与数据结构》第七周学习总结