不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • python基础

  • python模块

  • django

    • 01_Django基础

      • 01.django介绍
      • 02.环境安装
      • 03.创建django项目
      • 04.路由配置
        • 1.1 Django路由分发
        • 1.2 普通url
          • 1.2.1 app01/urls.py
          • 1.2.2 app01/views.py
        • 1.3 正则的url (\d+)
          • 1.3.1 app01/urls.py
          • 1.3.2 app01/views.py
        • 1.4 正则分组(?P\d+)
          • 1.4.1 app01/urls.py
          • 1.4.2 app01/views.py
        • 1.5 使用name构建自己想要的url
          • 1.5.1 app01/urls.py
          • 1.5.2 app01/views.py
          • 1.5.3 反解出url中的name
      • 05.请求与相应
      • 06.类视图
      • 07.中间件
      • 08.cookie
      • 09.session
    • 02_Model数据库操作

    • 03_DRF框架

    • 04_部署

  • flask

  • SYL

  • Celery

  • 微服务

  • python
  • django
  • 01_Django基础
xiaonaiqiang
2021-02-15
目录

04.路由配置

# 1.1 Django路由分发

  • mysite/urls.py
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 配置路由分发
    path('app01/', include(('app01.urls', 'app01'), namespace='app01')),
]
1
2
3
4
5
6
7
8
9

# 1.2 普通url

# 1.2.1 app01/urls.py

from django.urls import path, re_path
from app01 import views

urlpatterns = [
    re_path('index1/$', views.index1, name='indexname1'),          # 方法1:无正则匹配url
]
1
2
3
4
5
6

# 1.2.2 app01/views.py

from django.shortcuts import HttpResponse

# 方法1:无正则匹配url( http://127.0.0.1:8000/index1/?uid=1 )
def index1(request):
    print( request.GET )             # {"uid": "1"}
    nid = request.GET.get('uid')    # 1
    return HttpResponse('无正则匹配url')
1
2
3
4
5
6
7

# 1.3 正则的url (\d+)

# 1.3.1 app01/urls.py

  • http://127.0.0.1:8000/app01/index1/
from django.urls import path, re_path
from app01 import views

urlpatterns = [
    re_path('index2/(\d+)/$', views.index2, name='indexname2'),     # 方法2:基于(\d+)正则的url
]
1
2
3
4
5
6

# 1.3.2 app01/views.py

  • http://127.0.0.1:8000/app01/index2/1/
from django.shortcuts import HttpResponse

# 方法2:基于(\d+)正则的url(  http://127.0.0.1:8000/index2/1/  )
def index2(request, uid):
    print( uid )                    # 1
    return HttpResponse('基于(\d+)正则的url')
1
2
3
4
5
6

# 1.4 正则分组(?P<nid>\d+)

  • 基于正则分组(?P<nid>\d+),可以不考虑接收参数顺序 (推荐)

# 1.4.1 app01/urls.py

  • http://127.0.0.1:8000/app01/index3/1/2/
from django.urls import path, re_path
from app01 import views

urlpatterns = [
    re_path('index3/(?P<nid>\d+)/(?P<pid>\d+)/$', views.index3, name='indexname3'),        # 方法3:基于(\d+)正则的url
]
1
2
3
4
5
6

# 1.4.2 app01/views.py

from django.shortcuts import HttpResponse

# 方法3:基于正则分组(?P<nid>\d+)(  http://127.0.0.1:8000/app01/index3/1/2/  )
def index3(request, nid, pid):
    print(nid)                     # 1
    print(pid)                     # 2
    return HttpResponse('基于正则分组url')
1
2
3
4
5
6
7

# 1.5 使用name构建自己想要的url

# 1.5.1 app01/urls.py

  • http://127.0.0.1:8000/app01/index3/1/2/
from django.urls import path, re_path
from app01 import views

urlpatterns = [
    re_path('index4/$', views.index4),                               # 方法4:使用name构建自己想要的url
]
1
2
3
4
5
6

# 1.5.2 app01/views.py

from django.shortcuts import HttpResponse
from django.urls import reverse

# 方法4:使用name构建自己想要的url (http://127.0.0.1:8000/index4/)
def index4(request):
    url1 = reverse('indexname1')                         # /index1/
    url2 = reverse('indexname2', args=(1,))                  # /index2/1/2/
    url3 = reverse('indexname3', kwargs={'pid': 1, "nid":2})       # /index3/1/2/
    return render(request, 'index.html')
1
2
3
4
5
6
7
8
9

# 1.5.3 反解出url中的name

  • 根据request.path中的绝对路径反解出url中的name名字
resolve_url_obj = resolve(request.path)         # request.path路径: /student/homework_detail/52
resolve_url_obj.url_name                   # 从path中解析出url名字 url_name = homework_detail
1
2
上次更新: 2024/3/13 15:35:10
03.创建django项目
05.请求与相应

← 03.创建django项目 05.请求与相应→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式