博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python测试开发django-4.获取url参数和name的作用
阅读量:7091 次
发布时间:2019-06-28

本文共 3000 字,大约阅读时间需要 10 分钟。

前言

如打开博客园按时间分类标签页【】,里面是时间参数是动态的,如果我想获取里面的时间参数2018和10这两个参数,这就涉及到url参数的获取了。

获取url参数

先用path去匹配一个url地址,类似于:archive/2018/10.html,于是取两个参数名称year,month。参数用<name>这种格式

from django.conf.urls import urlfrom django.urls import re_path, pathfrom hello import viewsurlpatterns = [    # 匹配 archive/2018/10.html    path("archive/
/
.html", views.home),]

hello.py/views.py视图函数内容

from django.shortcuts import renderfrom django.http import HttpResponse, Http404# Create your views here.def home(request, year="2018", month="01"):    return HttpResponse("获取当前页面home时间标签:%s年/%s月" %(year, month))

启动服务后,浏览器输入地址:

1070438-20181101215625856-1781024869.png

正则匹配url

上面的案例虽然可以实现从url上获取参数了,但是会遇到一个问题,年和月可以输入各种数据,如:archive/2018/101.html,很显然不太合理。

如果想让year参数只能是4个数字,month参数只能是2个数字,该怎么做呢?这就需要用到正则匹配了。

  • ?P 参数year
  • [0-9] 匹配0-9的数字
  • {4} 匹配4个数字
  • {1,2} 匹配1-2个数字
  • r 是raw原型,不转义
  • ^ 匹配开始
  • $ 匹配结束
from django.conf.urls import urlfrom django.urls import re_path, pathfrom hello import viewsurlpatterns = [    # 匹配 archive/2018/10.html    path("archive/
/
.html", views.home), url(r'^archive1/(?P
[0-9]{4})/(?P
[0-9]{1,2}).html$', views.home1)]

hello.py/views.py视图函数内容

from django.shortcuts import renderfrom django.http import HttpResponse, Http404# Create your views here.def home(request, year="2018", month="01"):    return HttpResponse("获取当前页面home时间标签:%s年/%s月" %(year, month))def home1(request, year="2018", month="01"):    return HttpResponse("获取当前页面home1时间标签:%s年/%s月" %(year, month))

启动服务后,浏览器输入地址:http://127.0.0.1:8000/archive1/2018/10.html

(month输入一位数字也可以如:http://127.0.0.1:8000/archive1/2018/1.html)

1070438-20181101223455275-787624666.png

urls.py中定义name的作用

如果现在有一个home.html页面,还有一个demo.html页面,之前两个页面是独立的不相干的,如果现在需要从home页,点个按钮,跳转到demo.html该如何实现?

hello/templates/home.html写入以下内容

    
上海-悠悠

欢迎来到django!

点这里到demo页

hello/templates/demo.html写入以下内容

    
demo样式

这是我的博客地址,可以百度搜:上海-悠悠

上海-悠悠-博客园

《python自动化框架pytest》

pytest是最强大最好用的python自动化框架,没有之一。本书详细讲解pytest框架使用方法,fixture功能是pytest的精髓,书中有详细的案例讲解。

另外最后会有项目实战代码,灵活用到selenium自动化项目上。
pytest交流群874033608

百度阅读地址点此

hello/views.py文件

from django.shortcuts import renderfrom django.http import HttpResponse, Http404# Create your views here.def home(request):    return render(request, 'home.html')def demo(request):    return render(request, 'demo.html')

helloworld/urls.py文件内容

from django.conf.urls import urlfrom django.urls import re_path, pathfrom hello import viewsurlpatterns = [    url('^demo/$', views.demo),    url('^home/', views.home),]

这样就可以实现在home页点点这里到demo页

1070438-20181101231643137-618518970.png

如果在页面里面把url地址写死了:<a href="demo/">点这里到demo页</a>,这样会有个弊端,当多个页面用到这个地址时候,如果后续这个地址变了,那就很难维护了。

为了url地址维护起来方便,可以给它去个唯一的名称,也就是name参数,接下来在url配置里加个name名称。

from django.conf.urls import urlfrom django.urls import re_path, pathfrom hello import viewsurlpatterns = [    url('^demo/$', views.demo,  name="demo_page"),    url('^home/', views.home,  name="home_page"),]

把hello/templates/home.html跳转的地址改成如下:

跳转到demo页面

django更多关于urls学习可以参考

python学习交流QQ群:588402570

你可能感兴趣的文章
phpnow修改默认站点根目录的方法
查看>>
协方差
查看>>
聚类算法:K-means
查看>>
5V转3.3v电路
查看>>
PL/SQL Developer登入时候报ORA-12638: 身份证明检索失败的解决办法
查看>>
ArcEngine下投影坐标和经纬度坐标的相互转换
查看>>
Apache AB 如何传递参数
查看>>
AOP
查看>>
java Map迭代
查看>>
npm配置文件
查看>>
MooseFs-分布式文件系统系列(四)之简单聊聊MFS的日常维护
查看>>
EasyShortcut Easyshortcut easyShortcut 简介
查看>>
WebRTC APM音频处理流程概述
查看>>
养成好的JAVA编码习惯
查看>>
js操作select和option
查看>>
tomcat
查看>>
Golang操作数据库
查看>>
093实战 Nginx日志切割,以及脚本上传nginx的切割日志
查看>>
MyBatis传入参数为集合 list 数组 map写法
查看>>
Python-Mac 安装 PyQt4
查看>>