django之二urls.py和view.py的相关知识点

一、URL函数简单解析

1、url() 函数可以接收四个参数,分别是两个必选参数:regex、view,和两个可选参数:kwargs、name。

def url(regex, view, kwargs=None, name=None):

    return re_path(regex, view, kwargs, name)
  • regex: 正则表达式,与之匹配的URL会执行对应的第二个参数view。
  • view: 用于执行与正则表达式匹配的URL请求。
  • kwargs: 视图使用的字典类型的参数。
  • name: 用来反向获取URL。

django之二urls.py和view.py的相关知识点

2、相关调试:url()函数的入参view的入参值,必须是一个视图函数的内存地址!而不能是一个视图函数被执行后的返回值!(不然调试过程中会报相关报错)。

django之二urls.py和view.py的相关知识点

3、用简单的例子来说明【调用一个函数的函数名】和【调用一个函数】的本质区别。

django之二urls.py和view.py的相关知识点

django之二urls.py和view.py的相关知识点

二、对【helloworld/helloworld】目录下的urls.py和view.py执行顺序和关联的简单记录

1、 url.py和view.py的执行顺序和request对象的来源

第一步:从前端网站输入任意一个网址A,都会先从urls.py被变量urlpatterns里的多个url函数的第一个参数的参数值进行匹配,如果满足其中一个url函数B的第一个参数的参数值要求,就会执行url函数B的第二个入参view的入参值(这个时候,其实就是要开始调用一个对应的视图函数的内存地址了,在这边例子里,是调用了view.py里的视图函数leiyuxing的内存地址django之二urls.py和view.py的相关知识点

 对应url匹配规则【url(r'^lei$', view.leiyuxing)】,该url匹配规则没有传给视图函数【leiyuxing】多余的入参,所以视图函数【leiyuxing】此时一定要有且只能有一个入参。

django之二urls.py和view.py的相关知识点

2、对于一个视图函数【leiyuxing】的唯一一个入参的入参名(该入参的入参值对应的一定是一个HttpRequst对象)的取值规则讲解

2.1 第一种场景:假设该视图函数leiyuxing的这个唯一入参的入参名为【request】。

 一个视图函数一定至少要有一个入参值为【HttpRequest对象】的入参,其他入参个数不固定要结合url匹配规则进行添加。

django之二urls.py和view.py的相关知识点

django之二urls.py和view.py的相关知识点

django之二urls.py和view.py的相关知识点

2.2 第二种场景:假设该视图函数leiyuxing的这个唯一入参的入参名为【ddrb_request_1】

django之二urls.py和view.py的相关知识点

django之二urls.py和view.py的相关知识点

三、视图函数的相关内容

1、什么是视图函数?

视图函数是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。这个视图函数代码一般约定是放置在项目或应用程序目录中的名为views.py的文件中。

django之二urls.py和view.py的相关知识点

django之二urls.py和view.py的相关知识点

注:假如这个view.py文件被urls.py里的url函数里的相关参数调用了,那么这个view.py里的每个函数都是视图函数,例如上图中的index()和leiyuxing()都是视图函数

2、视图函数该怎么定义入参个数和入参名(假设该视图函数对应的一个url匹配规则里没传任何一个用户在浏览器上输入的入参值)?

django之二urls.py和view.py的相关知识点

四、多个url设置

首先,我们可以观察在【helloworld/helloworld/urls.py】里的变量类型为list的变量urlpatterns里有个值A为【url(r'^$', view.index)】,值A的作用是打开首页【http://127.0.0.1:8000】(端口号不是必须得是8000,域名也不是必须得是127.0.0.1。我们目前是按照本地项目来进行学习,所以在这里就认为值A的作用是打开首页【http://127.0.0.1:8000】即可。)】

但是呢, 按照实际情况,每个网站肯定有很多个不同地址所对应的页面。那么如果想加个新地址B比如:【http://127.0.0.1:8000/newPage001】,且通过这个新地址B打开对应的一个对应的新页面,我们接下来需要怎么做呢?所以,我们看下面的操作步骤吧!

1、第一步:在view.py里加个新的视图函数。

细节: 视图函数名一般默认跟url地址一样,但可以不相等。

django之二urls.py和view.py的相关知识点

2、第二步:在urls.py里加个新的url配置。

细节:

假设urls.py有10个不同的url配置,每个url配置都对应有唯一1个地址。且,假设十个url配置假设分别为:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10;且,假设十个url配置里各自对应地址为:B1,B2,B3,B4,B5,B6,B7,B8,B9,B10;

那么,用户在任一浏览器上输入地址B8,django项目【helloworld】的底层框架会自动获取到地址B8和相关所有请求数据给后端服务器,后端服务器也会经过相关代码获取到urls.py所有ur配置信息并遍历url配置信息,当遍历到到url配置A8会得到正确的地址B8就停止遍历。

django之二urls.py和view.py的相关知识点

3、第三步:接着,在任一浏览器上输入地址【http://127.0.0.1:8000/newPage1】,就会打开对应的一个页面信息,页面信息是【这是一个新地址B对应的页面信息!】

django之二urls.py和view.py的相关知识点

五、多个url设置

关于regex正则表达式用法,可以参考菜鸟教程:https://www.runoob.com/regexp/regexp-metachar.html

关于python正则表达式用法,可以参考菜鸟教程:https://www.runoob.com/python/python-reg-expressions.html

上一篇:快速上手pandas(上)


下一篇:本周最新文献速递20210620