python中url以及views的详细讲解

1url路由基础

1、在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址

2、path参数的使用方法path( articles/int:year/ , views.year_archive) ,使用·尖括号,前边是str代表参数的类型,后面代表参数的名称year
path参数类型:
捕获url中的参数需要用到尖括号<> 指定尖括号中的值类型比如 int:a str:link这个转换器还有许多类型比如:
int 匹配0和正整数
str 匹配任何空字符串但不包括/
slug 可理解为注释 匹配任何ascii码包括连接线和下划线
uuid 匹配一个uuid对象(该对象必须包括破折号—,所有字母必须小写)
path 匹配所有的字符串 包括/(意思就是path前边和后边的所有)

3、url要复杂一些 (r’blog/(?P[0-9]{4})/′)首先需要开始符和结尾符 /') 首先需要开始符^和结尾符 /)首先需要开始符 和结尾符,参数匹配一个 ()就是一个匹配参数,
(?P<匹配的字段名>正则表达式)
4、进行匹配是不包括get或者post请求方式的参数及域名比如www.qq.com/blog?num=1并不会匹配?后边的字符
5、可以给request参数设置一个默认值,最常见的分页url,比如

urlpatterns=[
url(r ‘^page/$’ ,views.page),
url(r ‘^page(?P[0-9]+)​/’ ,views.page),

def page(request,num= 1 ):
pass

<参考资料: https://blog.csdn.net/xiaoyaosheng19/article/details/82709298

https://blog.csdn.net/qq_40272386/article/details/78800507>

参考案例

1 无参数情况
配置URL及其视图如下:  
url(r'^hello/$', hello)  
def  hello(request):
        return   HttpResponse( "Hello World" )
 访问http://127.0.0.1:8000/hello
        
 2  传递一个参数 配置URL及其视图如下,URL中通过正则指定一个参数:
url(r'^plist/(.+)/$', helloParam)
 def   helloParam(request,param1):
 	return  HttpResponse( "The param is : "   +   param1)
 访问http://127.0.0.1:8000/plist/china
 3   传递多个参数 参照第二种情况,以传递两个参数为例,配置URL及其视图如下,URL中通过正则指定两个参数: 
 (r'^plist/p1(\w+)p2(.+)/$', helloParams)
  def   helloParams(request,param1,param2):
 	 return   HttpResponse(param1  +param2) 
  访问http://127.0.0.1 :8000/plist/p1chinap22012/ 从这里可以看出,视图的参数是根据URL的正则式,按顺序匹配并自动赋值的。虽然这样可以实现任意多个参数的传递,但是却不够灵活,URL看起来很混乱,而且由于是正则匹配,有些情况下容易出错。  
  4   通过传统的”?”传递参数 例如,http://127.0.0.1:8000/plist/?p1=china&p2=2012,url中‘?’之后表示传递的参数,这里传递了p1和p2两个参数。 通过这样的方式传递参数,就不会出现因为正则
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值