Django笔记(三):路由urls

2024-01-18 07:12
文章标签 笔记 django 路由 urls

本文主要是介绍Django笔记(三):路由urls,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Django中视图的作用是在链接与视图函数之间做映射。创建完Django项目后,同名文件夹下的urls.py为项目的总路由(/project/project/urls.py):

from django.contrib import admin
from django.urls import pathurlpatterns = [path('admin/', admin.site.urls),
]

其中包含一条路由“admin”,映射的视图函数为admin.site.urls。当访问//localhost/admin/时,会打开Django自带的后台管理界面。

配置路由

创建app1,并在views.py中编写一个视图函数,如:

from django.shortcuts import render# Create your views here.
def index(request):return render(request, '1/index.html')

视图内容是将index.html模板返回,那如何编写访问index视图的路由呢?修改/project/project/usls.py:

from django.contrib import admin
from django.urls import path
from app1 import viewsurlpatterns = [path('admin/', admin.site.urls),path('index/', views.index, name="app1_index"),
]

在urlpatterns中添加路由规则即可,path(路由,视图函数,别名)。别名建议使用“app_func”的起名方式,避免app间url冲突。(别名在重定向时有一定作用)

路由包含

一个项目可能会包含多个app,每个app又包含多个功能,每个功能又有多个路由,如果将所有路由映射全部放在/project/project/urls.py中会显得杂乱,不利于后期扩展。可以通过路由包含逐级配置路由。如项目中有两个app,可通过include进行包含设置:

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path("app1/", include("app1.urls")),path("app2/", include("app2.urls")),path('admin/', admin.site.urls),
]

app1中urls.py,可以配置app1中的路由:

from django.urls import path
from app1 import viewsurlpatterns = [path("index/", views.index),
]

当访问//localhost/app1/index/时,首先会映射到app1/这个路由,之后会将其交给app1的urls路由文件继续进行子路的映射。

函数 include() 允许引用其它 URLconfs。每当 Django 遇到 include() 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。——Django文档

如果app1中有多个功能,可以继续分。app中创建urls文件夹,其下根据不同功能创建子路由文件夹,例如func1和func2,分别在其下创建各功能的路由文件。而app级路由文件则对func1和func2进行子路由的映射。

路由参数

如果我们编写一个博客网站,链接可能是这样的//localhost/abc/1/,表示abc这个人写的第一篇文章,那么第二篇文章链接应该是//localhost/abc/2/,如果每写一篇文章都设置一个路由,那我们的路由文件会及其复杂繁琐。此时,可以将路由的作者文章部分当做一个参数进行路由配置。

(注,这里的参数不是GET请求的参数,是以Django为出发点解析路由的一个概念名词,如果是请求参数,链接应该是//localhost/pages?user=abc&num=1)

urlpatterns = [path('abc/<int:num>', views.index),
]

参数规则<类型 : 名称>,如上一条路由会匹配所有abc后接数字(非负)的路由,并将数组存储在num参数中。

除了int还有str,slug(类似char)和uuid类型,使用方式与int类似。

如果路由过于复杂,可以通过re_path函数进行正则匹配,具体使用方式留给大家去查。

from django.urls import re_path
from app1 import viewsurlpatterns = [re_path(r"abc/(?P<num>\d+)", views.index),
]

接收路由参数

视图接收路由参数的方式很简单,增添同名参数即可:

from django.shortcuts import render# Create your views here.
def index(request, num):print(num)return render(request, '1/index.html')

这篇关于Django笔记(三):路由urls的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618355

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓