路由配置
首先,开始路由配置之前,在主目录下创建views.py的视图文件
写入视图函数
from django.http import HttpResponse def test(request): return HttpResponse('Hello World!!!')
一、path
最简单的路由
from django.contrib import admin from django.urls import path
from .views import * urlpatterns = [ path('admin/', admin.site.urls), path('test/',test), ]
注意:需要导入views.py
传参
from django.http import HttpResponse def test(request,course): return HttpResponse('Hello World!!!')
urlpatterns = [ path('admin/', admin.site.urls), path('test/<course>/',test), ]
这时浏览器访问的时候url为 127.0.0.1/test/参数
传不定长参数
如果在主路由设置路由为
path('book/',include('book.urls'),{'swich':'true'}),
那么就可以进行批量传参,子路由访问必须加参数,否则报错
但是有时候需要限制参数的类型
所以在urls.py里可以设置路由为 path('test/int:<course>/',test), 即限制为整数传参
python自带的很多默认的转换器
- str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
- int,匹配正整数,包含0。
- slug,匹配字母、数字以及横杠、下划线组成的字符串。
- uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
- path,匹配任何非空字符串,包含了路径分隔符
二、re_path
需要用到的包 from django.urls import path,re_path
views.py
def test1(request): return HttpResponse('这是用的re_path设置的') def test2(request,yy): print(yy,type(yy)) return HttpResponse('hello %s'%yy)
urls.py
re_path('^hello/$',views.test1), #精确查找 re_path('^hello/(?P<yy>[0-9]+)/',views.test2), #[0-9]表示数字,+表示0-无穷,?p表示命名
re_path只在Django 1.x里使用广泛,在Django 2.x里,path更加简洁高效
三、include
include时将路由分配到APP里面
新建APP python manage.py startapp app名 ;
注册APP,主目录下的settings.py
INSTALLAPP = {
'app名',
}
主目录下的urls.py
from django.contrib import admin
from django.urls import path,include
from .views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include('book.urls')),
]
APP目录下的urls.py
from django.urls import path
from . import views
urlpatterns = [
path('test/',views.test),
]
APP下的视图函数,函数体 return HttpResponse("Book's test!")
届时,该视图的URL为 127.0.0.1:8000/book/test
四、页面重定向
当某一个页面过时不用的时候,再次访问旧路由的时候能够自动跳转到新路由的页面
先写两个视图
def old(request): return HttpResponse('This is old web !!') def new(request): return HttpResponse('This is new web !!')
并配置路由
urlpatterns = [ path('old/',views.old), path('new/',views.new), ]
使之能够正常访问
法一
届时需要做跳转,先导入需要的包 from django.shortcuts import redirect
def old(request): return redirect('/book/new/') # return HttpResponse('This is old web !!') def new(request): return HttpResponse('This is new web !!')
然后再次访问旧的路由
会发现当访问旧路由的时候,自动跳转到了新路由
法二
使用name
更改子路由的分配 path('new/',views.new,name = 'news'),
更改视图函数,需导包 from django.shortcuts import reverse
def old(request): return redirect(reverse('news')) # return HttpResponse('This is old web !!') def new(request): return HttpResponse('This is new web !!')
访问旧路由
五、模板渲染
- 到主目录下的settings.py下修改TEMPLATES 'DIRS': [os.path.join(BASE_DIR)],
- 创建一个名为templates普通文件夹并注册,在该文件夹路径下创建APP名的文件夹,下级创建HTML文件
- 导包 from django.shortcuts import render
- 创建视图 return render(request,'book/index.html')
- 配置路由 path('index/',views.index),
看看效果
成功渲染!!!
作者:ChanceySolo
出处:https://www.cnblogs.com/chancey/p/10187873.html
版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!