关于django中urls数据传递到views的过程

django处理数据流程是:获取url数据,对app.urls中定义的url进行匹配,匹配成功则转到其后给定的views中的函数进行处理。views处理的时候有时需要从url中获取信息,然后根据这个信息特异性的提取model中的信息。最后决定显示的内容,这里主要叙述提取url的数据和传递的过程以及如何设定属于自己的解析过程

url解析过程

正常情况下有几种默认的解析方式比如

url_patterns=[
path("<int:x>/data",views.show_data,name="show_data")
]

在这个例子中,django将提取整数值/data的模式,并且将x值传递到views.show_data的函数中。
int是从哪里来的呢,就是从django.urls.converters中来的,根据这个我们就可以到这个文件中设计我们自己的converter,就像int一样

设计自己的converter

首先打开converters文件,然后定义一个普通的类比如:

#功能是得到一个六位数
def get_six_num:
    #定义正则表达式
    regex_six='[0-9]{6}'
    #定义一个传递数据的函数,这个函数将会把数据传递给view中的函数,converter都是用to_python来传递数据的
    def to_python(self,values):
        #传递数据
        return int(values)
    #这个函数将会决定将得到的python数据转化为字符,成为url中使用的格式(暂时不太理解需要进一步学习)
    def to_url(self,values):
        return "%04d"%values

然后将自己的converter注册一下,使其可用

#修改DEFAULT_CONVERTERS(还在converters文件中),和init以及其他的converters格式一样,比如
DEFAUL_CONVERTERS={
#这个就是原来整数的那个转化,int就是在url中使用的代表(比如:int:x)
"int":IntConverters(),
#这个是我们自己的converter
"six_number":get_six_num()
}

接下来就可以在url中使用我们自己的converter,但是,使用之前要重启一下server。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值