Django3 路由文件位置/文件格式/路由传值=8

一、路由系统

路由先从setting.py文件中指定的ROOT_URLCONF主路由文件中的urlpatterns从上往下依次进行匹配,匹配到后返回相应视图
或匹配到include,将剩余字符发送给其进行继续匹配。

1.1 路由文件位置

主路由文件:默认项目根目录下urls.py

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""

这个文件是在项目目录下setting.py中指定的,比如:

ROOT_URLCONF = 'mysite.urls'

其它app的路由文件则可以由此主路由文件包含:

from django.contrib import admin
from django.urls import include,path

urlpatterns = [
    path('learn/', include('learn.urls')),
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

1.2 路由文件格式

路由是视图的路由,由访问者访问的url进行匹配,定位到具体的View视图。
视图可以直接渲染字符串进行响应,也可以渲染模版进行响应。
而视图一般有三种:

1、基于函数的视图
先import相应views文件from my_app import views,然后添加urlpatternspath('', view.home, name='home')
2、基于类的视图
先引入相应类from other_app.views import Home,然后添加urlpatternspath('',Home.as_view(), name='home')
3、包含其它url配置文件
先引入include()函数from django.urls import include, path,然后添加urlpatternspath('blog/', include('blog.urls'))

注:匹配支持正则表达式。

当设置include时,可以include文件,也可以include其他序列,比如:

from django.urls import include, path

from apps.main import views as main_views
from credit import views as credit_views

extra_patterns = [
    path('reports/', credit_views.report),
    path('reports/<int:id>/', credit_views.report),
    path('charge/', credit_views.charge),
]

urlpatterns = [
    path('', main_views.homepage),
    path('help/', include('apps.help.urls')),
    path('credit/', include(extra_patterns)),
]

二、接收额外参数

2.1 URL传值

比如说我们URLConf添加一个int值的id参数:
参数格式:<类型:值>

符号 说明
str 字符串
int 整数
slug 对应ascii所组成的字符
uuid 对应uuid格式字符串
path 对应完整URL路径
path('about/<int:id>/', views.about, name='about'),

然后在Views中接收这个参数:

def about(request, id):
    return render(request, 'learn/aboutus.html', {'id':id})

之后我们在前端使用这个参数:

<h2>This is about page{{ id}}!</h2>

访问效果:

2.2 POST传值

post 传值的话,是在html中使用表单,

<input type="text" name="<para_name>">

使用的时候在views.py中方法的request方法接收:

def getpara(request):
    name = request.POST['<para_name>']

然后就可以使用这个值了。

2.3 传统(get/post)传值

像传统上的?id=xx&name=na这种方式的传值django会忽略。

posted @   那个白熊  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示