当前位置: 首页 > news >正文

Django基础(二)———URL与映射

前言

上篇文章给大家简单介绍Django框架的创建以及使用。

这篇文章将介绍Django框架当中最为重要的基础之一  URL与映射


一、URL与映射是什么?

在 Django 框架中,URL 与映射(URLconf)是核心机制之一,负责将用户请求的 URL 路径映射到对应的视图函数/类

二、核心概念

1.URLconf (URL configuration)
一个 Python 模块(通常是 urls.py),定义 URL 模式与视图的映射关系。

2.URL 模式
通过 path() 或 re_path() 定义的规则,匹配 URL 路径并触发视图。

三、使用 

1.使用流程

#https://www.baidu.com/s?wd=python
#URL与视图的映射
#并/S(URL)->视图函数,进行映射
#http://127.0.0.1:8000->返回“欢迎来到Django”

2.编写代码

在urls.py种写入以下代码

from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponsedef index(request):return HttpResponse("欢迎使用Django")
urlpatterns = [path('admin/', admin.site.urls),path('s',index)
]

这里只是给大家做一个演示,实际开发过程当中函数视图实不会卸载url.py文件当中,会写在view.py当中。

3.url两种传参方式

# 在URL中携带参数
#1.通过查询字符串(query string):https://www.baidu.com/s?wd=python&a=1&b=2
#2.在path中携带:http://127.0.0.1:8000/book/2

3.1查询字符串

#views.py
from django.shortcuts import HttpResponse
#1.查询字符串的方式:http://127.0.0.1:8000/book?id=3
def book(requset):book_id =requset.GET.get('id')return HttpResponse('您查询的id:{}'.format(book_id))
#urls.py
from app import views
urlpatterns = [path('admin/', admin.site.urls),path ('book',views.book)
]

 

3.2path传参

#views.py
#2.path方式 http://127.0.0.1:8000/book/1
def book_path(request,book_id):return HttpResponse('您查询的id:{}'.format(book_id))
#urls.py
#urls.pyfrom app import views
urlpatterns = [path('admin/', admin.site.urls),path('book/<book_id>',views.book_path)
]

 

 #1.以后在浏览器中,如果book_id输入的是一个非整形,那么会出现404错误:/book/abc
#2.在视图函数中,得到的book_id就是一个整形,否则,默认是str类型
path('book/int:<book_id>', views.book_path)

4.path函数详解

path函数的定义为:path(route,view,name=None,kwargs=None)。以下对这几个参数进行讲解。

1.route参数:ur1的匹配规则。这个参数中可以指定ur1中需要传递的参数,比如在访问文章详情页的时候,可以传递一个id。传递参数是通过>>尖括号来进行指定的。并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,那么可以这样写int:id以后匹配的时候,就只会匹配到id为int类型的ur1,而不会匹配其他的ur1,并且在视图函数中获取这个参数的时候,就已经被转换成一个int类型了。其中还有几种常用的类型:

  • str:非空的字符串类型。默认的转换器。但是不能包含斜杠。

  • int:匹配任意的零或者正数的整形。到视图函数中就是一个int类型

  • slug:由英文中的横杠-,或者下划线_连接英文字符或者数字而成的字符串。11-222-1234_abdf

  • uuid:匹配uuid字符串。

  • path:匹配非空的英文字符串,可以包含斜杠/。(某个文件夹下面的文件)

2.view参数:可以为一个视图函数或者是类视图.as_view()或者是django.ur1s.include()函数的返回值。

3.name参数:这个参数是给这个ur1取个名字的,这在项目比较大,ur1比较多的时候用处很大。

5.url模块化

在我们的项目中,不可能只有一个app,如果把所有的app的views中的视图都放在ur1s.py中进行映射,肯定会让代码显得非常乱。因此django给我们提供了一个方法,可以在app内部包含自己的ur1匹配规则,而在项目的ur1s.py中再统一包含这个app的ur1s。使用这个技术需要借助include函数。示例代码如下:

在people应用下创建urls.py文件夹

#people应用下 views.py
from django.shortcuts import HttpResponse
def people_list(requset):return HttpResponse('电影列表')def people_id(request,people_id):return HttpResponse('您传入的ID是{}'.format(people_id))
#people应用下的 urls.py
from django.urls import pathfrom . import views#指定命名空间
app_name = 'people'
urlpatterns = [path('people_list',views.people_list,name='people_list'),path('people_id/<int:people_id>',views.people_id,name='people_id')
]
#Cangku应用下的 urls.py
from django.urls import path
from django.urls import include
urlpatterns = [path('admin/', admin.site.urls),path('people/',include("people.urls"))
]


文章转载自:
http://autonomy.ciuzn.cn
http://abatement.ciuzn.cn
http://chimere.ciuzn.cn
http://ble.ciuzn.cn
http://boughpot.ciuzn.cn
http://chiromegaly.ciuzn.cn
http://cane.ciuzn.cn
http://acrodromous.ciuzn.cn
http://blackie.ciuzn.cn
http://cannonade.ciuzn.cn
http://chablis.ciuzn.cn
http://cavecanem.ciuzn.cn
http://bilbao.ciuzn.cn
http://carriageable.ciuzn.cn
http://alecto.ciuzn.cn
http://batty.ciuzn.cn
http://baresark.ciuzn.cn
http://baotou.ciuzn.cn
http://beaky.ciuzn.cn
http://blackguard.ciuzn.cn
http://alphascope.ciuzn.cn
http://caprate.ciuzn.cn
http://abolitionist.ciuzn.cn
http://billsticker.ciuzn.cn
http://amritsar.ciuzn.cn
http://bromidic.ciuzn.cn
http://addie.ciuzn.cn
http://candlemas.ciuzn.cn
http://apostatize.ciuzn.cn
http://authoritative.ciuzn.cn
http://www.dtcms.com/a/281064.html

相关文章:

  • 10 款游戏设计工具深度解析,打造卓越游戏项目
  • 在Autodl服务器中使用VNC建立图形界面
  • MySQL查询今天、昨天、上周、近30天、去年等的数据的方法
  • [锂电池]锂电池入门指南
  • Android 多语言适配(I18n)
  • 逻辑回归案例
  • Prompt提示工程
  • just thinking for vocabulary
  • Visual Prompt Tuning核心思路讲解(个人总结)
  • 《大数据技术原理与应用》实验报告七 熟悉 Spark 初级编程实践
  • 物联网系统中MQTT设备数据的保存方法
  • 了解 Android 内存使用情况 - Google I/O 大会演讲
  • ethers.js-8-bigNmber和callstatic模拟
  • 【Android】日志的使用
  • 《黑马笔记》 --- C++核心编程
  • 10分钟搞定!Chatbox+本地知识库=你的私人语音导师:企业级全栈实现指南
  • etcd压缩历史版本
  • 安装MATLAB流程中遇到的问题
  • wpf Canvas 动态增加右键菜单
  • css:flex:1;是谁的缩写
  • compose、 pipe 组合函数实现
  • 20th Day| 235.二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作, 450.删除二叉搜索树中的节点
  • Postman + Newman + Jenkins 接口自动化测试
  • 使用canal同步分库分表数据,到 Elasticsearch
  • JavaScript事件
  • 【数据同化案例1】ETKF求解 Lorenz-63 模型的同化系统(完整MATLAB实现)
  • Java-特殊文件、日志技术
  • CherryStudio配置DeepSeek调用MCP服务实现任务自动化
  • Elasticsearch 9.x 搜索执行过程(源码解析)
  • AOP简化MyBatis分页:高效自动化方案