Django博客开发教程:URL与视图函数
在讲URL与视图函数之前我们先给大家简单介绍一下用户访问网站的流程。我们访问一个网站的时候,一般先打开浏览器,然后在浏览器的地址栏里输入一个网址,也就是URL,然后回车,我们就可以在浏览器里看到这个网址返回的内容。这是我们能看得见的过程,还有一些我们看不见的过程,那就是:当我们在浏览器里输入网址(URL)时,回车,然后浏览器就会向目标网址发送一个HTTP请求,服务器收到请求之后就会给这个请求做出一个响应,这个响应就是把对应的内容通过浏览器渲染出来,呈现给我们看。这个过程就是请求与响应。
下图,就是请求响应的过程。
更多相关的内容,大家可以查看文章:请求与响应
上面我们提到了URL,这个URL在我们的Django中,其实是由我们自己构造的。(这个说法不太严谨,但为了方便大家理解之后的内容,先当这说辞是正确的。)
Django中,我们约定URL是在项目同名目录下的urls.py文件里urlpatterns列表构造的。
myblog/myblog/urls.py
表现形式如下:
1 2 3 4 5 6 7 8 | urlpatterns = [ path(正则表达式, views视图函数,参数,别名), ] 括号里的参数说明: 1、一个正则表达式字符串 2、一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 3、可选的要传递给视图函数的默认参数(字典形式) 4、一个可选的name参数(别名) |
比如我想构造三个URL,网站首页(http://www.django.cn/)、新闻(http://www.django.cn/news/)、论坛(http://www.django.cn/bbs/),我们可以这么做。
1 2 3 4 5 | 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文件里通过下面的方式导入:
1 2 | 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视图函数,在里面输入:
1 2 3 4 5 6 7 8 | 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,代码如下:
1 2 3 4 5 | from blog import views #导入视图函数 urlpatterns = [ ... path( '' , views.hello), #这个是我们构造的URL ] |
代码写完之后,启动项目就可以在浏览器里看到视图函数返回的字符串"欢迎使用Django!"
每一个URL都会对应一个视图函数,当一个用户请求访问Django站点的一个页面时,然后就由Django路由系统(URL配置文件)去决定要执行哪个视图函数使用的算法。
通过URL对应关系匹配 ->找到对应的函数(或者类)->返回字符串(或者读取Html之后返回渲染的字符串)这个过程也就是我们Django请求的生命周期。
视图函数,就是围绕着HttpRequest和HttpResponse这两个对象进行的。了解更多相关知识,可查看入门教程里的:视图函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理