马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一.前言
前面我们讲了路由,路由也就是我们用来在欣赏器来访问的所在,而本日我们接下来就要和各人讲视图了,视图也就是视图函数,我们本日就来解说视图函数的知识点
二.视图参数
这个是我们很平常的一个页面对应的一个视图,每个视图函数的第一个参数都必须加上,通常写成request,反面假如要加上参数就是动态的url里的参数,前面在路由中已经说过了,那我们说的参数就是这个request
问:request是什么?
requests是一个对象,存放了欣赏器给咱们发过来的全部内容,以是含有:
- 哀求相干全部的数据: 当前访问的url、哀求方式、...
- django额外添加的数据
这是一些request的常见利用,假如碰到post哀求,各人可以用postman举行测试,固然得在设置中把csrf机制给关掉
如许就可以,通过postman发送哀求了- # (1)当前的url
- print(request.path_info)
- # (2)载荷参数
- print(request.GET)
- print(request.GET.get('username'))
- # (3)请求方式
- print(request.method)
- # (4)如果post请求,传递请求体(原始数据)
- print(request.body)
- # (5)post的请求体 并且请求头携带content-type:application/x-www-form-urlencoded或者multipart/form-data
- print(request.POST)
- print(request.POST.get('password'))
- # (6)得到文件 请求头携带content-type:multipart/form-data
- print(request.FILES)
- # (7)请求头
- print(request.headers)
- # (8)直接拿cookie
- print(request.COOKIES)
- # (9)拿到匹配信息
- print(request.resolver_match)
复制代码 三.返回值
3.1 HttpResponse
这个是我们平常用的,这个就不讲了
3.2 JsonResponse
我们先导入 from django.http import JsonResponse
这个相称于是先辈行了一次json序列化之后,常用于前后端分离做接口
3.3 redirect
这个是重定向,我们前面提到过,这个就是重定向到一个新的url
假如是同域名的时间,就不须要写前面的域名
3.4 render
用来渲染,也就是返回一个html页面,这个就是本日的重点
这个的用法就是传入一个request和一个html的文件名,现在的标题就是html在哪个内里找,这个就是接下来的重点
默认先去settings.TEMPLATES.DIRS指定的路径找。(这个存放公共的)
按注册序次每个已注册的app中找他templates目次,去这个目次中探求对应的html文件
一样平常情况下,原则,谁人app中的的模板,去哪个谁人app中探求。
按照上面的要求,我们先创建一个templates文件夹,然后就去settings内里去设置
然后再注册app
如许当在最外层的templates找不到的时间,就会根据app注册的序次去app下面的templates内里去找,以是我们再在app的目次下面创建templates
但是这时间我们还会发现一个标题就是,我们假如有重名的html文件,那么永久都是在上一个注册的app内里拿到html,以是我们通常会在app的templates目次下面创建一个文件夹与app同名来存放html,如许返回只须要写上app名字/html名字就可以或许指定了
以是我们通常这么创建
如许就可以指定啦
四.相应头
我们可以在返回之前拿到这个对象,在内里添加头和设置cookie
如许就是设置进去了
五.FBV和CBV
- FBV,视图用函数的情势编写。(现在主流)
- CBV,视图用类的情势编写。(前后端分离主流)
FBV就是我们之前所写的函数情势,而CBV我们没有写过,这个是类格式,须要先导入- from django.views import View
复制代码 这里给出截图给各人分析
起首我们看FBV情势,他就是路由反面跟着一个函数名字
而CBV他是界说一个类,这个类须要继承View,我们须要导入,然后界说一个get和post,这个可以或许自动判定出来是get方法还是post方法,而我们CBV只能通过request.method来判定,然后他的视图函数内里的类还须要.as_view(),这个方法是继承View这个类的
这个FBV的F就是function,CBV的C就是class
六.静态资源
静态资源:
- 开发须要:css、js、图片。
- - 根目录的 /static/
- - 已经app目录下载 /static/ 文件夹下
复制代码 - 媒体文件:用户上传的数据(excel/pdf/video)
6.1 静态文件
这个起首也须要设置,这个的设置和templates的设置很像,探求的序次也是,settings.STATICFILES_DIRS内里找,找不到就去按照序次去注册的app的static文件夹探求,以是我们为了防止有的底层注册的app内里找不到,我们也是要在app创建的static文件夹下创建一个和app名字一样的文件夹
我们就这么设置
那我们这么写可定是能访问的,但是不发起这么做,由于后期假如要更改文件位置,就会很贫苦
我们通常都这么写,这个static就是导入的seetings.py内里的STATIC_URL
6.2 媒体文件
我们一样平常在根目次创建一个media文件夹存放媒体文件
但是我们访问渲染不出来,这是由于没有给这个媒体文件没有访问权限,我们须要在url视图加上些东西
- from django.conf.urls.static import static
- from django.conf import settings
- urlpatterns = [
- path('user/', views.show),
- ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
复制代码 如许就能正常访问了
七.总结
这里讲了也是根本点,尚有就是养成好风俗,多练就能乐成
八.增补
下一期将和各人解说一下模板,期待各人的点赞关注加收藏
|