ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Django 路由详解(二)

2022-03-29 00:02:50  阅读:160  来源: 互联网

标签:变量 views Django 详解 myapp path import 路由


 路由变量

有时候一个路由可以代表多个不同的页面,如果每个页面都要设置一个路由配置,这种做法明显不可取,在Django在定义路由时,可以对路由设置变量,使路由具有多样性。

路由的变量类型有字符类型、整形、slug和uuid,最为常用的是字符类型和整型。各个类型说明如下:

  • 字符类型:匹配任何非空字符串,但不含斜杠。如果没有指定类型,就默认使用该类型。
  • 整型:匹配0和正整数。
  • slug:可理解为注释、后缀附属等概念,常作为路由的解释性字符。可匹配任何ASCII字符以及连接符和下划线,能使路由更加清晰易懂。比如网页的标题是“13岁的孩子”,其路由地址可设置为“13-sui-de-hai-zi”。
  • uuid:匹配一个uuid格式的对象。为了防止冲突,规定必须使用“-”并且所有字母必须小写,例如:0b1e7883-5ab4-4b71-8d3c-56bc71b680a2

在路由中,使用变量符号<>可以为路由设置变量,在括号里面以冒号划分为两部分,冒号前面为变量的数据类型,冒号后面为变量名,如果没有设置变量的数据类型,则默认为字符串类型。

以下代码是带有字符串、整型和slug的变量:

#myapp urls.py
from django.urls import path,re_path
# from myapp.views import myapp_index,new
from . import views

urlpatterns = {
    #配置myapp应用路由地址,指向myapp的views.py中的视图函数myapp_index
    path("",views.myapp_index),
    path("new/",views.new),
    path("<year>/<int:month>/<slug:day>",views.timeView)
}
  • <year>: 变量名为year,数据类型为字符串类型,与<str:year>含义一样。
  • <int:month>: 变量名为month,数据类型为整型。
  • <slug:day>: 变量名为day,数据类型为slug。

在views.py中的视图函数timeView代码如下:

from urllib import response
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def timeView(request,year,month,day):
    return HttpResponse(str(year)+"/"+str(month)+"/"+str(day))

其中参数year、month、day的参数值分别从路由地址所设置的变量<year>、<int:month>、<slug:day>而来.

在浏览器上的效果如下:

 

 修改浏览器上的地址,再次访问效果如下:

 

路由可选变量

路由可选变量是在访问地址时,可以不用传变量。代码如下:

#myapp urls.py
from calendar import month
from django.urls import path,re_path
# from myapp.views import myapp_index,new
from . import views
import time


urlpatterns = {
    #配置myapp应用路由地址,指向myapp的views.py中的视图函数myapp_index
    path("",views.myapp_index),
    path("new/",views.new),
    path("<year>/<int:month>/<slug:day>",views.timeView),
    path("time/",views.Option_variable,{"current_time":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())) }),
}
  • 参数只能以字典的形式表示。
  • 设置的参数只能在视图函数中读取和使用。
  • 字典的一个键值对代表一个参数,键值对的键代表参数名,键值对的值代表参数值。
  • 参数值没有数据格式限制,可以为某个实例对象、字符串或列表(元组)等。

 在浏览器中访问效果如下:

 

标签:变量,views,Django,详解,myapp,path,import,路由
来源: https://www.cnblogs.com/JcHome/p/16069711.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有