django2.X中url和path的区别及用法

一:path和url的区别:
django.urls path
django.conf.urls url

path与url是两个不同的模块,效果都是响应返回页面, path调用的是python第三方模块或框架,而url则是自定义的模块,如Views下的def函数对应你url中的参数值.

例如:

url(r'^login',views.login),
def login(request):
    return render(request,'login.html')

url路由基础
1、在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址
2、path参数的使用方法path(‘blog/str:string/’) 简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称
path参数类型:
捕获url中的参数需要用到尖括号<> 指定尖括号中的值类型比如int:astr:link这个转换器还有许多类型比如:
int 匹配0和正整数
str 匹配任何空字符串但不包括/
slug 可理解为注释 匹配任何ascii码包括连接线和下划线
uuid 匹配一个uuid对象(该对象必须包括破折号—,所有字母必须小写)
path 匹配所有的字符串 包括/(意思就是path前边和后边的所有)
3、url或者re_path要复杂一些 (r’^blog/(?P[0-9]{4})/′)首先需要开始符和结尾符 &#x27;) 首先需要开始符^和结尾符 

 )首先需要开始符 

 结尾符,参数匹配一个 ()就是一个匹配参数,
(?P<匹配的字段名>正则表达式)
4、进行匹配是不包括get或者post请求方式的参数及域名比如www.qq.com/blog?num=1并不会匹配?后边的字符
5、可以给request参数设置一个默认值,最常见的分页url,比如

urlpatterns=[
      url(r'^page/$',views.page),
     url(r'^page(?P<num>[0-9]+)$',views.page)
]

#views

def page(request,num='1'):
     pass

6、自定义错误页面关键字handler400=blog.views.page_no_find
#urls.py

handler400=blog.views.page_no_find

**

二、在python3中使用django2,设置urls的区别
**
在python3中使用django2的时候,在设置urls的时候,会遇到一些坑。这里做一下记录。
系统的urls.py里,在1.X的时候,都是采用的url方式。如下

 url(r'^', include("test1.urls")),

在2.0中,它推荐使用的是path模块,所以这里就改写一下。引包from django.urls import path

path('', include("test1.urls")),

这里要注意的是,如果要使用正则,则要引入re_path,from django.urls import path, re_path
这里面的正则写法,有点意思,一定要使用()把正则包起来,然后用?P正式表达式 这种形式来表式。在自己项目中的urls.py里,会有例子

2, 自己项目的urls.py里,我们也使用path
1.x里面的写法是

url(r’^page=(\d+)&key=(\w+)$’, views.detail, name=”detail”), 

现在的写法

re_path('page=(?P<page>\d+)&key=(?P<key>\w+)', views.detail, name="detail"),

这样一对比就能明白了吧,我的链接是http://127.0.0.1:8000/page=12&key=abc

3,关于系统的urls.py里的namespace的问题
1.x中写法

 url(r'^', include("test1.urls", namespace='test1')),

可是在2.0中你这么写,会报错,说什么app_name的,这个自己可以看一下,怎么解决呢,其实很简单,只要在自己项目urls.py中加上

app_name = 'test1'

这句就行了。
--------------------- 
作者:xiaoyaosheng19 
来源:CSDN 
原文:https://blog.csdn.net/xiaoyaosheng19/article/details/82709298 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值