在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程。我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网址返回的内容。这是我们能看得见的过程,还有一些我们看不见的过程,那就是:当我们在浏览器里输入网址(URL)时,回车,然后浏览器就会向目标网址发送一个HTTP请求,服务器收到请求之后就会给这个请求做出一个响应,这个响应就是把对应的内容通过浏览器渲染出来,呈现给我们看。这个过程就是请求与响应。
下图,就是请求响应的过程。
更多相关的内容,大家可以查看文章:请求与响应
上面我们提到了URL,这个URL在我们的Django中,其实是由我们自己构造的。(这个说法不太严谨,但为了方便大家理解之后的内容,先当这说辞是正确的。)
Django中,我们约定URL是在项目同名目录下的urls.py文件里urlpatterns列表构造的。
myblog/myblog/urls.py
表现形式如下:
urlpatterns = [ path(正则表达式, views视图函数,参数,别名), ] 括号里的参数说明: 1、一个正则表达式字符串 2、一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 3、可选的要传递给视图函数的默认参数(字典形式) 4、一个可选的name参数(别名)
比如我想构造三个URL,网站首页(http://www.django.cn/)、新闻(http://www.django.cn/news/)、论坛(http://www.django.cn/bbs/),我们可以这么做。
urlpatterns = [ path('', views.index), #里面留空,代表首页 path('news/',views.news),#news path('bbs/',views.bbs),#bbs ]
URL就是这么构造的,我们的域名www.django.cn不需要写,完整的URL应该要这么写:path(正则表达式, views视图函数,参数,别名), 里面的正则表达式, views视图函数,是必须要写的,而参数,别名是可选的。我们在有特殊需要的时候才写。关于URL详细介绍和使用方法可以查看文章:路由配置系统URLconf
通过上面我们可以看到,每个URL都对应一个views视图函数名,视图函数名不能相同,否则会报错。视图函数,Django中约定写在APP应用里的views.py文件里。然后在urls.py文件里通过下面的方式导入:
from APP应用名 import views from APP应用名.vews import 函数名或类名
视图函数是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。这个视图函数代码一般约定是放置在项目或应用程序目录中的名为views.py的文件中。
http请求中产生两个核心对象:
1、http请求---->HttpRequest对象,用户请求相关的所有信息(对象)
2、http响应---->HttpResponse对象,响应字符串
之前我们在欢迎页面这章的时候有操作过一次。我们回顾一下:
首先,打开打开bolg目录下的views.py文件,写一个hello视图函数,在里面输入:
from django.http import HttpResponse def hello(request): """ 写一个hello函数,通过request接收URL或者说是http请求信息, 然后给这个请求返回一个HttpResponse对象 """ return HttpResponse('欢迎使用Django!')
例子里,我们用到的request,就是HttpRequest对象。HttpResponse("欢迎使用Django!"),就是HttpRequest对象,它向http请求响应了一段字符串对象。
我们打开myblog目录下的urls.py文件中先导入视图函数,然后构造一个URL,代码如下:
from blog import views #导入视图函数 urlpatterns = [ ... path('', views.hello), #这个是我们构造的URL ]
代码写完之后,启动项目就可以在浏览器里看到视图函数返回的字符串"欢迎使用Django!"
每一个URL都会对应一个视图函数,当一个用户请求访问Django站点的一个页面时,然后就由Django路由系统(URL配置文件)去决定要执行哪个视图函数使用的算法。
通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串)这个过程也就是我们Django请求的生命周期。
视图函数,就是围绕着HttpRequest和HttpResponse这两个对象进行的。了解更多相关知识,可查看入门教程里的:视图函数
标签:http,函数,views,URL,视图,Django From: https://www.cnblogs.com/yoloooo/p/17614379.html