Django第三章 初探路由


完整的路由包括:路由地址、视图函数、可选变量、路由命名

1.路由定义规则

Django2.X路由定义

在APP中添加文件,将所有属于APP的路由都写入该文件中,容易管理和区分每个APP的路由地址,MyDjango文件夹中的urls.py是将每个APP中的urls.py统一管理。
这时在MyDjango文件夹中的urls.py需要设置

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),#指向内置Admin后台系统的路由文件sites.py
    path('',include('My.urls')),#指向APP的路由文件urls.py
]

APP中的urls.py编写内容如下

from django.urls import path
from . import views

urlpatterns = [
    path('', views.hello)]

views.hello是指视图函数处理网站首页的用户请求和响应的过程。在My的views.py中编写函数

from django.shortcuts import render

# Create your views here.
def hello (request):
    value  = 'this is a test'
    print(value)
    return render(request,'hello.html')

路由变量的设置

为使路由具有多样性
路由的变量类型由字符类型、整型、slug和uuid
test
在APP的urls.py中添加

urlpatterns = [
    #path('', views.hello),
    path('<year>/<int:month>/<slug:day>',views.myvariable)
]

在views.py中添加

from django.http import HttpResponse
def myvariable(request,year,month,day):
    return HttpResponse(str(year)+'/'+str(month)+'/'+str(day))

在浏览器中输入带有日期http://127.0.0.1:8000/2020/05/20则出现
在这里插入图片描述
若只输入http://127.0.0.1:8000
在这里插入图片描述

正则表达式的路由

进一步规范日期格式
urls.py中设置

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

urlpatterns = [
    #path('', views.hello),
    # path('<year>/<int:month>/<slug:day>',views.myvariable)
    re_path('(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2}).html',views.mydata)
]

views.py中设置

from django.http import HttpResponse
def mydata(request,year,month,day):
    return HttpResponse(str(year)+'/'+str(month)+'/'+str(day))

在这里插入图片描述
末端”.html“为变量设置终止符,假如末端没有设置,在浏览器上输入无限长的字符串,路由也能正常访问。

2.命名空间与路由命名

命名空间namespace

创建一个新的APP,名为user
tip:
在pycharm的工具栏找到 Tools,点击之后会有“Run manage.py task”选项,点击它之后,在pycharm下面会出现一个输入界面,在里面输入“startapp appName(你的App名称)”,回车之后就可以在工程下面看到你新建的App了。
MyDjango的setting中INSTALLED_APPS中添加user
MyDjango的urls.py中

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include(('My.urls','My'),namespace = 'My')),
    path('',include(('user.urls','user'),namespace = 'user'))
]
]

路由命名name

在APP中的urls.py中命名

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

urlpatterns = [
    path('', views.hello ,name = 'hello'),
    ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值