好嘞,继续我们的Django的学习。
昨天我们创建了一个自己的app,然后经过各种设置访问到了该app,今天我们继续去了解下外部访问Django app的过程,这其中最重要的就是路由过程了。从实现上来说,路由设置其实就是系统url与视图方法的映射设置。
我们首先打开工程目录下的urls.py文件,该文件里记录了本站点所有的路由设置。因此所有的url访问请求,我们都需要直接或者间接的在本文件里进行设置,直接设置就是直接在urls.py文件中设置url和视图方法的对应关系,间接设置就是引入其他路径下的urls.py文件到该文件中。目前我们先掌握直接设置即可。
然后访问1234/的时候,系统会去views视图里找test1方法。另外我们也可以直接导入方法,例如:
上述两种方法最终实现的效果一样。
接下来我们去看看该如何去写视图里的方法。
Django里的视图其实就是app下的views.py文件,在其内部可以写一系列的方法或者类,该视图专门用来处理客户端访问请求并返回相应的数据。
好嘞,我们先看看视图里的方法实现过程。
视图负责处理客户端的访问请求和返回响应数据,其实现过程是围绕两个对象开展的,分别的是HttpRequest对象和HttpResponse对象。其中HttpRequest对象负责封装用户的访问请求,HttpResponse对象负责封装对请求的响应消息。
视图里的方法,其第一个参数必须是HttpRequest对象,表示获取客户端的访问请求。例如:
django请求对象的详细参数以及实现方式可以在django.http.request查看源码具体分析,也可以查看官方文档,常见的属性有:
request.scheme 返回协议的种类,例如 http请求还是https请求
request.path 返回请求页面的完整路径
request.method 返回请求方法的类型,例如 get post put delete等
request.GET 返回请求里的get参数
request.POST 返回请求里的post参数
request.COOKIES 返回请求里的cookie
常见的方法有:
request.get_host() 返回请求主机地址
request.get_port() 返回请求端口号
request.is_secure() 判断访问请求是否安全的,如果请求是基于https,则返回True,否则返回False。
request.get_full_path() 返回请求的完整路径
视图方法里我们可以做一些业务逻辑处理,处理完后,如果想让客户端看到结果,那么必须返回一个HttpResponse对象,该对象里可以封装我们想让客户端看到的内容。例如:
HttpResponse(“Hello world”)返回一个字符串 hello world显示到客户端浏览器。
总之当我们在后台处理完数据后,想让浏览器显示相应的数据的时候,我们就通过HttpResponse返回即可。
上述基于函数的类的视图的写法,可以很好地处理一些简单环境下的应用,但是不能扩展或者自定义它们。除了上述基于函数的视图写法外,还有一种基于类的视图的应用,基于类的视图可以让视图的开发过程更加规范、管理更加便捷。
接下来我们就在Django里通过一个类来描述视图。Django规定,类视图均直接或者间接继承自django.views.generic.View类。因此我们写类视图的时候先导入该类。
基于类的视图的核心是允许你用不同的实例方法来响应不同的http请求方法。而函数视图里你需要做分支判断。
然后我们再去django工程里的urls.py里注册下上述的类视图,做好url路由。
配置类视图的时候,使用类视图的 as_view 方法注册路由。as_view 会返回类中一个方法的引用,它会到 view 中,执行 dispatch 方法, dispatch 会方法会在类中查找类似get\post之类的类方法,然后和请求方式进行匹配,匹配上了,就返回该方法的引用。即as_view()方法会把用户请求跟类里的方法关联起来。如果向上边的类视图发送一个 get 请求,他会把 get 转换为小写形式并和类中的方法进行匹配,然后匹配到 get 方法,会把 get 方法的引用返回到 as_view 调用处。所以在 get 请求下最后 as_view 是 get 方法的引用。
运行上面的django工程,我们看看输出。
上述只是简单的类试图,django里为了方便类试图的使用,其提供了常见的功能封装,包括TemplateView,ListView,DetailView。后面我们做demo演示的时候会使用到,现在就是了解下。
接下来我们来个demo,做一个小站点,站点里包含首页(index)、 注册(register)、登录(login)、找回密码(forgetpwd)四个模块。
第一步:我们创建一个app
第二步:我们规定:
http://127.0.0.1:8000/index/ --- 主页
http://127.0.0.1:8000/register/ --- 注册
http://127.0.0.1:8000/login/ --- 登录
http://127.0.0.1:8000/forgetpwd/ --- 找回密码
第三步:我们去设置我们的视图:
我们使用函数视图来快速地制定视图访问。例如:
第四步: 我们去做路由url设置
第五步: 浏览器检查效果
我们分别验证了下,发现是能够进行访问的。另外大家也可以把上面的函数视图变换成类视图试试效果。
好嘞,我们先到这里,今天主要内容是介绍了下函数视图和类视图,大家可以先看看,多写写,我们明天继续。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除