Django学习笔记(Part3-路由配置)

说明:
1.笔记来源于B站up主达内官方和千锋教育的教学视频、一些书籍以及自己的总结
2.Django官方参考文档:https://docs.djangoproject.com/zh-hans/3.2/

一、URL和视图函数

路由地址格式:protocol://hostname:port/path?query#[fragment]

1.Django如何处理URL请求

  1. Django从配置文件settings.py中,根据ROOT_URLCONF找到主路由文件urls.py
  2. Django加载主路由文件中的urlpatterns变量(包含很多的路由数组)
  3. 依次匹配urlpatterns中的path,匹配到第一个合适目标后中断匹配
  4. 匹配成功——调用对应的视图函数处理请求,返回响应
  5. 匹配失败——返回404
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('page/2022/', views.page_2022)
]

2.视图函数

用于接收浏览器请求(HttpRequest对象)并通过HttpResponse对象返回响应的函数

def xxx_view(request[, 其他参数]):
    return HttpResponse对象

# 例子: file:<项目同名文件夹>/views.py
from django.http import HttpResponse
def page1_view(request):
    html = '<h1>这是一个标题</h1>'
    return HttpResponse(html)

3.path()函数

导入:from django.urls import path
语法:path(route, views, name-None)
参数:
1. route:字符串类型,匹配的请求路径
2. views:指定路径所对应的视图处理函数的名称
3. name:为地址起别名,在模板中地址反向解析时使用

二、转换器

1.path转换器

  • 作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数
  • 语法:<转换器类型:自定义名>

转换器类型

类型作用例子
str匹配除了’/'之外的非空字符串/users/str:username匹配/users/pop
int匹配0或任何正整数,返回一个int/page/int:page匹配/page/100
slug匹配任意由ASCII字母、数字、连字符和下划线组成的短标签/detail/slug:slg匹配/detail/this-is-django
path匹配非空字段,包括路径分隔符’/’/users/path:ph匹配/users/goods/a/b/c

用法

# urls.py
path('page/<int:pg>', views.pagen_view)

# views.py
def pagen_view (request, pg):
  html = '这是编号为%d的网页'%(pg)
  return HttpResponse(html)

2.re_path转换器

  • 在url匹配过程中可以使用正则表达式进行精准匹配
  • 语法:re_path(reg, view, name=xxx)
  • 正则表达式为命名分组模式(?Ppattern);匹配提取参数后用关键字传参方式传递给视图函数

用法

# 要求
## 1.可匹配http://127.0.0.1:8000/20/mul/40
## 2.不可匹配http://127.0.0.1:8000/200/mul/400

# urls.py
re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})$', views.cal_view)

# views.py
def cal_view(request, x, op, y):
    html = 'X:%s op:%s y:%s'%(x, op, y)
    return HttpResponse(html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值