在讲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),#newspath('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 HttpResponsedef 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这两个对象进行的。了解更多相关知识,可查看入门教程里的:视图函数

参考链接:Django博客开发教程:URL与视图函数

Django 3.2.5博客开发教程:URL与视图函数相关推荐

  1. Django 3.2.5博客开发教程:基础配置

    创建项目之后,我们需要对项目进行最基础的配置.这些配置是我们做项目的时候必须要配置的,所以我们先提前配置好. 我们打开myblog目录下的settings.py文件. 一.设置域名访问权限 myblo ...

  2. Django 3.2.5博客开发教程:HelloWorld欢迎页面

    基础配置做好了之后,我们就可以先迁移数据到数据库,然后启动我们的项目,感受Django的魅力. 在Pycharm左下角底部的Terminal,会弹出Terminal终端窗口,Pycharm自动会帮我们 ...

  3. Django 3.2.5博客开发教程:用Admin管理后台管理数据

    上节我们我们把数据库迁移到数据库里去了,那么现在我们数据库里是个什么样的情况呢?我们点击Pycharm右上角的Database,然后在网站项目里选中我们的数据库文件db.sqlite3,把它拖到Dat ...

  4. Django 3.2.5博客开发教程:使用富文本编辑器添加数据

    在Django admin后台添加数据的时候,文章内容文本框想发布一篇图文并茂的文章需就得手写Html代码,这十分吃力,也没法上传图片和文件.这显然不是我等高大上程序猿想要的. 为提升效率,我们可以使 ...

  5. Django 3.2.5博客开发教程:体验django模板

    上面我们有说过,用户发送请求的时候,视图会返回一个响应,响应可以是一个重定向,一个404错误,一个XML文档,一张图片或者是一个HTML内容的网页.前面几个返回的信息比较有限,我们重点更多是放在HTM ...

  6. Django 3.2.5博客开发教程:体验数据查询

    进行数据查询之前,我们需要先进入我们的管理后台,在里面添加一些数据.然后我们用Pycharm打开我们的数据库.具体操作方法:用Pycharm可视化操作数据库 我们的数据结构长这般模样: 双击blog_ ...

  7. Django 3.2.5博客开发教程:一些常用的模板使用方法

    一.django static文件的引入方式 1.在django project中创建 static文件夹 2.settings.py中配置要在 STATIC_URL = '/static/' 下边 ...

  8. Django 3.2.5博客开发教程:实现模板之前的分析与准备

    在之前的体验django模板.体验数据查询以及一些常用的模板使用方法文章里,向大家介绍了如何将数据库的数据展现到网页上,和一些简单的模板使用方法.之后我们就开始实现各种页面的展现. 在此之前,我们先从 ...

  9. Django 3.2.5博客开发教程:实现网站首页

    实现首页模板前,我们先把共公的页面模板base.html调用好.首先我们先看导航部分,除开首页和关于博主之外,其它的其实是我们的文章分类名.如图: 我们只需要在首页视图函数里,查询出所有的文章分类名称 ...

最新文章

  1. 【收藏】严重影响IDEA启动速度的插件
  2. 理解JavaScript的执行机制
  3. 地方门户网站运营策略
  4. “数据驱动”时代来临,阿里云数据中台如何赋能金融业?(附重磅报告下载)
  5. 谷歌地图插件Mapsed.js
  6. 基于链表的两个集合的交集(C++)
  7. 【英语学习】【English L06】U01 Breakfast L5 Continental and English
  8. Launch Image Source
  9. 零基础学web前端难吗?新手该怎么学?
  10. python xlwings下载_python xlwings excel报表自动化 系列文章精讲 (一)
  11. 【yishen】黑苹果 声卡驱动
  12. socket编程常用函数
  13. Excel中经纬度格式化处理
  14. 剪映+json解析将视频中的声音转换成文本
  15. 数据库修改用友U8账套
  16. 关于“打开数据库时出错: 到主机 的 TCP/IP 连接失败。”的解决方法
  17. L2-032 彩虹瓶
  18. 矩阵谱半径与矩阵范数的关系
  19. 南宁动物园的动物,真是一个比一个疯!
  20. 计算机网络课程实训致谢,计算机毕业实习报告:毕业实习报告致谢语怎么写

热门文章

  1. python3精要(62)-编译与解释实践(1)
  2. C指针原理(16)-C指针基础
  3. 【深度学习】这千层transformer让我目瞪口呆
  4. 【深度学习】在PyTorch中使用 LSTM 自动编码器进行时间序列异常检测
  5. 【Python】Python常用数据类型的基本操作(长文系列第①篇)
  6. 【数据分析】Python数据分析指南(全)
  7. 【论文解读】Yoshua Bengio最新修改版论文:迈向生物学上可信的深度学习
  8. (赞助5本)谷歌官方推荐的 TensorFlow 2 “豹书”来了!
  9. 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结
  10. 【科普】国内外高质量数据科学竞赛平台有哪些?