1.URL函数简单解析

1.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。

1.2.友情提示:要想深入熟悉url()函数的具体实现逻辑,可以自己抽空阅读源码,但前期只要知道如何使用url()函数并知道传符合要求的入参值用于开发即可。

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

1.3.2.相关调试:用简单的例子来说明【调用一个函数的函数名】和【调用一个函数】的本质区别。

 1.3.3.相关调试:用简单的例子来证明如果入参view的入参值传错了,会引起怎样的错误

1.3.4.如果日志有展示了报错日志,该django项目【helloworld】就得重新启动服务,不然在项目已经提示报错之后做的任何代码修改都不会生效了只能等重新启动服务后才能生效。

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

2.1.url.py和vies.py的执行顺序和request对象的来源。

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

2.2.立即重新djang项目【helloworld】的小技巧。

2.3.对一个视图函数【hongjingsheng1】的唯一一个入参的入参名(该入参的入参值对应的一定是一个HttpRequst对象)的取值规则讲解。

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

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

url的简单使用可以先参考该网址:https://blog.csdn.net/weixin_45414731/article/details/99751732。

2.3.2.第二种场景:假设该视图函数hongjingsheng1的这个唯一入参的入参名为【zheshi_request_666】。

3.视图函数的相关内容

3.1.什么是视图函数?

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

具体视图函数的含义和使用,可以参考这篇csdn网址:https://blog.csdn.net/weixin_45414731/article/details/99751732。

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

3.3.视图函数假如入参个数为空,视图函数被调用后会有什么报错信息?

4.多个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打开对应的一个对应的新页面,我们接下来需要怎么做呢?所以,我们看下面的操作步骤吧!

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

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

4.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框架帮我们实现的就行。)

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

5.多个url设置

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

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

django学习-2.urls.py和view.py的相关知识点的更多相关文章

  1. Django学习----js传参给view.py

    需求: 散点图中每选择一个点,获取到id之后传给view.py,根据这个id进行sql语句的查询. 问题: 要求实时查询 解决办法: ajax查询 js页面 .on("mousedown&q ...

  2. Django学习(1)——python manage.py startapp app-name新建app报错问题

    作为一个刚接触python的小白,开始学习Django注定前路漫漫,记录一下学习过程中的问题和解决方案. 感谢“自强学堂”的无私奉献,根据教程安装了Django 1.9.12后,尝试新建项目,此时使用 ...

  3. 【Python爬虫学习笔记(1)】urllib2库相关知识点总结

    1. urllib2的opener和handler概念 1.1 Openers: 当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例).正常情况下,我们使 ...

  4. django基础 -- 3. urls.py view.py 参数 别名 重定向 常用方法 静态文件

    一.基本格式 from django.conf.urls import url from . import views #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数 ...

  5. Django框架——基础之视图系统(View.py)

    Django框架之View.py(视图文件) 1. 视图简介 视图层是Django处理请求的核心代码层,我们大多数Python代码都集中在这一层面. 它对外接收用户请求,对内调度模型层和模版层,统合数 ...

  6. Django学习之manage.py使用

    1.django-admin.py startproject mysite 开始一个项目,会初始化一些项目的结构文件 2.python manage.py runserver ip:port 如: p ...

  7. 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  8. 二 Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  9. 巡风视图函数源码学习--view.py

    记录一下巡风扫描器view.py这个脚本里的视图函数的学习,直接在代码里面做的注释,里面有一些print 代码是为了把数据打印出来小白我自己加的,勿怪勿怪.可能存在一些理解错误和不到位的地方,希望大佬 ...

随机推荐

  1. 基于GTID恢复误篡改数据

    问题描述:创建测试库和测试表,先update数据,在delete数据,在update数据,通过gtid查找两次update的值. 参考文档:https://baijiahao.baidu.com/s? ...

  2. MySql(一)表类型(存储引擎)

    MySql(一)表类型(存储引擎) 一.MYSQL存储引擎概述 二.存储引擎的特性对比 2.1 MyISAM 2.2 InnoDB 2.2.1 自动增长列 2.2.2 外键约束 2.2.3 存储方式 ...

  3. Kubernetes --(k8s)yml 文件

    认识yml文件 yaml文件语法 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾 ...

  4. CentOS7.X安装英伟达显卡采坑之路

    1.系统信息 操作系统版本:CentOS7.X 显卡版本:英伟达 Tesla P100 其他软件包安装信息: CUDA 9.0 CUDNN 7.4.2.24 lightgbm 2.2.X Boost ...

  5. 织梦dedecms首页、列表页、文章页文章点击浏览次数实时调用方法

    首先呢,先在根目录 /plus 目录下找到count.php  复制一份然后命名为viewclick.php(你也可以命名为你容易理解的名字)用编辑器将viewclick.php打开然后删除以下几行代 ...

  6. XV6学习(12)Lab lock: Parallelism/locking

    代码在github上 这一次实验是要对XV6内部的锁进行优化,减少锁争用,提高系统的性能. Memory allocator (moderate) 第一个实验是对XV6内核的内存页面分配器进行改进,改 ...

  7. [CF套题] CF-1163

    CF-1163 传送门 # Penalty A B1 B2 C1 C2 D E F 3 (483) 464 +0 0:06 +1 01:13 +3 01:12 + 01:57 + 01:56 A 第一 ...

  8. POJ-2411 Mondriann's Dream (状压DP)

    求把\(N*M(1\le N,M \le 11)\) 的棋盘分割成若干个\(1\times 2\) 的长方形,有多少种方案.例如当 \(N=2,M=4\)时,共有5种方案.当\(N=2,M=3\)时, ...

  9. fzu2218 Simple String Problem

    Accept: 2    Submit: 16 Time Limit: 2000 mSec    Memory Limit : 32768 KB  Problem Description Recent ...

  10. Codeforces Round #603 C. Everyone is a Winner!

    题意:给你一个整数n,求所有n/k的值(k∈{1,2,3...,n,.......}). 题解:最简单的方法是用枚举1~sqrt(n),把除数和商放进set中,就能直接水过,但后来看其他人的题解了解到 ...