系列文章目录
文章目录
目录
2.通过视图函数名称来进行重定向redirect(reverse(day03))
前言
我们实现django的各种功能都会创建一个子应用去实现,子应用要使用子路由去访问,这一章我们来了解路由配置,重定向,请求。
一、子应用创建注册路由
1.创建
切换到项目根目录下输入python manage.py startapp books
python manage.py startapp books
完成后没有什么提示信息,我们刷新,会发现多了一个子应用的目录
注意:如果报这行错误,请切换到项目根目录运行
2.注册
在上一章中讲过一个叫做安装子应用的目录INSTALLED_APPS,我们在setting中找到他,添加上'应用名.apps.BooksConfig',其实就是一个子应用的配置类,这样就注册好了
3.路由配置
总路由配置
需要使用django里的include方法是总路由与子路由连接起来,但是子路由我们现在还没有,首先要在子应用文件里创建一个叫做urls.py的文件,在总路由中使用include连接起来
path('index/', include('books.urls')),
创建的子路由中没有路由配置,我们要手动添加,可以参考总路由中的注释,模仿总路由写一个出来
# 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
urlpatterns = [
# name给当前路由起别名
path('hahaha', views.index, name='index')
]
path中
第一个参数指定路由,空值时候可以使用127.0.0.1:8000/index直接访问,如果没有设置第一个参数,可以使用127.0.0.1:8000/index/来访问,路由组成是这样127.0.0.1:8000/总路由名/分路由名
总路由第一个路径参数也可以为空,如果总路由与子路由的第一个参数都为空的话,就可以直接使用127.0.0.1:8000来访问
第二个参数指定方法
这里的方法是在子应用视图view中的方法,我们可以来写一个
打开views.py,创建一个方法,django会自动传入一个请求request的参数,我们返回一个response
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def index(req):
return HttpResponse("hello")
把方法路径放入第二个参数中
第三个参数指定别名
重定向时候使用
可以不设置
ps:path可以使用re_path代替,更加规范
4.访问子应用
二.重定向
1.通过路由别名方式重定向redirect
我们可以使用redirect('路由别名')
注意:必须要使用路由别名去重定向,使用视图函数名会找不到,如果有多个app的话避免别名重复,会引入命名空间这个概念,命名空间就是使多个不同项目之间隔离起来,我们可以在添加主路由时候在include函数中添加namespace='index' index是命名空间的名字可以自由取
path('', include('books.urls', namespace='index'))
然后去到子路由添加
app_name = 'index'
这时候在重定向引用时候可以使用命名空间:路由别名来重定向,就像这样
def day01(req):
return redirect('index:day03')
当然,不使用命名空间也可以成功跳转,使用命名空间主要是把每个应用之间隔离起来
这时我们在浏览器输入当前路由,按下回车,地址栏会自动变为跳转后的路由地址
2.通过视图函数名称来进行重定向redirect(reverse(day03))
def day01(req):
# return redirect('index:day03')
return redirect(reverse(day03))
参数可以直接传入函数名,效果与使用使用路由别名一致