导读:本篇文章首席CTO笔记来给大家介绍有关django怎么处理url的相关内容,希望对大家有所帮助,一起来看看吧。
django怎么发起url请求
开始于setting文件。当你运行python manage.py runserver,脚本将在于manage.py同一个目录下查找名为setting.py的文件。这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置时ROOT_URLCONF,它将作为URLconf告诉Django在这个站点中那些Python的模块将被用到
当访问 URL /hello/ 时,Django 根据 ROOT_URLCONF 的设置装载 URLconf 。 然后按顺序逐个匹配URLconf里的URLpatterns,直到找到一个匹配的。 当找到这个匹配 的URLpatterns就调用相关联的view函数,并把HttpRequest 对象作为第一个参数。
正如我们在第一个视图例子里面看到的,一个视图功能必须返回一个HttpResponse。 一旦做完,Django将完成剩余的转换Python的对象到一个合适的带有HTTP头和body的Web Response
总结一下:
进来的请求转入/hello/.
Django通过在setting.py中的ROOT_URLCONF配置来决定根URLconf.
Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
Django中url与path及re_path区别
初学者 一般不能分清两者的区别,所这简单介绍下两者.首先,url是Django 1.x中的写法,p在Django2.1中,开始舍弃django1.x中的url写法。在django2.x中,描写url配置的有两个函数path和re_path.re_path()函数可以看做是django 1.x中得url函数,即可以在路径中使用正则.
path与url是两个不同的模块,效果都是响应返回页面, path调用的是python第三方模块或框架,而url则是自定义的模块,如Views下的def函数对应你url中的参数值.
例如:
在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址
url或者re_path要复杂一些 (r’^blog/(?P[0-9]{4})/′)首先需要开始符和结尾符 ') 首先需要开始符^和结尾符 ′)首先需要开始符和结尾符,参数匹配一个 ()就是一个匹配参数,
(?P匹配的字段名正则表达式)
进行匹配是不包括get或者post请求方式的参数及域名比如 并不会匹配?后边的字符
可以给request参数设置一个默认值,最常见的分页url,比如
自定义错误页面关键字handler400=blog.views.page_no_find
参数的使用方法path(‘blog/str:string/’) 简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称
捕获url中的参数需要用到尖括号 指定尖括号中的值类型比如int:astr:link这个转换器还有许多类型比如:
如果遇上路径和转换器语法都不足以定义的URL模式,那么就需要使用正则表达式,这时候就需要使用re_path(),而非path()。
举例:传递 数字结尾的参数
在python3中使用django2的时候,在设置urls的时候,会遇到一些坑。这里做一下记录。
系统的urls.py里,在1.X的时候,都是采用的url方式。如下
在2.0中,它推荐使用的是path模块,所以这里就改写一下。引包
注意:
1.x里面的写法是
现在的写法
这样一对比就能明白了吧,使用的链接是 ;key=abc
1.x中写法
可是在2.0中你这么写,会报错,说什么app_name的,这个自己可以看一下,怎么解决呢,其实很简单,只要在自己项目urls.py中加上这句就行了.如果不加的话可能报错,
注:
Django中URL两个空路径都不匹配怎么办
两个方案:
1:在后台将数据替换好送到前台,后台处理的办法可以使用replace或者正则表达式
2:后台不处理,让前台用jquery来处理,处理办法是正则表达式。
因为你没有具体的程序,所以只能给你一些建议。如果你把程序贴出来,可能会有更佳的解决办法。
结语:以上就是首席CTO笔记为大家介绍的关于django怎么处理url的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。