python测试开发django-4.获取url参数和name的作用
前言
如打开博客园按时间分类标签页【https://www.cnblogs.com/yoyoketang/archive/2018/10.html】,里面是时间参数是动态的,如果我想获取里面的时间参数2018和10这两个参数,这就涉及到url参数的获取了。
获取url参数
先用path去匹配一个url地址,类似于:archive/2018/10.html,于是取两个参数名称year,month。参数用<name>这种格式
from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
# 匹配 archive/2018/10.html
path("archive/<year>/<month>.html", views.home),
]
hello.py/views.py视图函数内容
from django.shortcuts import render
from django.http import HttpResponse, Http404
# Create your views here.
def home(request, year="2018", month="01"):
return HttpResponse("获取当前页面home时间标签:%s年/%s月" %(year, month))
启动服务后,浏览器输入地址:http://127.0.0.1:8000/archive/2018/10.html

正则匹配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 url
from django.urls import re_path, path
from hello import views
urlpatterns = [
# 匹配 archive/2018/10.html
path("archive/<year>/<month>.html", views.home),
url(r'^archive1/(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2}).html$', views.home1)
]
hello.py/views.py视图函数内容
from django.shortcuts import render
from 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)

urls.py中定义name的作用
如果现在有一个home.html页面,还有一个demo.html页面,之前两个页面是独立的不相干的,如果现在需要从home页,点个按钮,跳转到demo.html该如何实现?
hello/templates/home.html写入以下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上海-悠悠</title>
<base href="http://127.0.0.1:8000/" target="_blank">
</head>
<body>
<p>欢迎来到django!
<br>
<br>
<a href="demo/">点这里到demo页</a>
</p>
</body>
</html>
hello/templates/demo.html写入以下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo样式</title>
</head>
<body>
<p>
<h4> 这是我的博客地址,可以百度搜:上海-悠悠 </h4>
<a href="https://www.cnblogs.com/yoyoketang/" target="_blank" >上海-悠悠-博客园</a>
<hr>
<h4> 《python自动化框架pytest》 </h4>
<p>pytest是最强大最好用的python自动化框架,没有之一。本书详细讲解pytest框架使用方法,fixture功能是pytest的精髓,书中有详细的案例讲解。<br>
另外最后会有项目实战代码,灵活用到selenium自动化项目上。<br>
pytest交流群874033608
</p>
<a href="https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b" target="_blank" >百度阅读地址点此</a>
</p>
</body>
</html>
hello/views.py文件
from django.shortcuts import render
from 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 url
from django.urls import re_path, path
from hello import views
urlpatterns = [
url('^demo/$', views.demo),
url('^home/', views.home),
]
这样就可以实现在home页点点这里到demo页

如果在页面里面把url地址写死了:<a href="demo/">点这里到demo页</a>,这样会有个弊端,当多个页面用到这个地址时候,如果后续这个地址变了,那就很难维护了。
为了url地址维护起来方便,可以给它去个唯一的名称,也就是name参数,接下来在url配置里加个name名称。
from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
url('^demo/$', views.demo, name="demo_page"),
url('^home/', views.home, name="home_page"),
]
把hello/templates/home.html跳转的地址改成如下:
<a href="{% url 'demo_page' %}">跳转到demo页面</a>
django更多关于urls学习可以参考【https://docs.djangoproject.com/zh-hans/2.0/topics/http/urls/】
django交流QQ群:779429633
python测试开发django-4.获取url参数和name的作用的更多相关文章
- [js开源组件开发]query组件,获取url参数和form表单json格式
query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...
- django学习-5.获取url参数和name的作用
1.前言 假如我们要打开这两个博客园地址:[https://www.cnblogs.com/xiamen-momo/archive/2020/11.html].[https://www.cnblogs ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
- Angularjs中使用$location获取url参数时,遇到的坑~~~
今天在开发时候,需要用到Angularjs1.4.6获取url参数,网上查了一下,有部分文章提到用$location来获取.大致方法如下 var app = angular.module('myApp ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
随机推荐
- 如何适配处理iphoneX底部的横条 - ios
iphoneX手机取消了实体Home键,取而代之的是主界面底部不显眼的横条“Home Indicator”.当网页底部fixed 元素时候,一部分元素可能就被这个横条遮挡住,怎么适配解决呢? 第一步: ...
- 解决mysql不能远程登入的问题
mysql远程不能登入,问题就在于当时设置的账号只限制本地访问,mysql默认也只是本地访问. 之前的设置: 通过命令行登录管理MySQL服务器(提示输入密码时直接回车): mysql> /us ...
- 【58沈剑架构系列】RPC-client异步收发核心细节?
第一章聊了[“为什么要进行服务化,服务化究竟解决什么问题”] 第二章聊了[“微服务的服务粒度选型”] 第三章聊了[“为什么说要搞定微服务架构,先搞定RPC框架?”] 上一章聊了[“微服务架构之RPC- ...
- python 库资源大全
偶然的机会翻到这篇文章,很全面,来源: Python 资源大全中文版 哪些 Python 库让你相见恨晚? 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 pyth ...
- 用 Java 实现一个冒泡排序算法
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如 ...
- POJ2104 K-th Number [整体二分]
题目传送门 K-th Number Time Limit: 20000MS Memory Limit: 65536K Total Submissions: 69053 Accepted: 24 ...
- 分布式系统的一致性算法------《Designing Data-Intensive Applications》读书笔记13
一致性算法是分布式系统中最重要的问题之一.表面上看,这似乎很简单,只是让几个节点在某些方面达成一致.在本篇之中,会带大家完整的梳理分布式系统之中的共识算法,来更加深刻的理解分布式系统的设计. 1.原子 ...
- perf工具crash的问题
perf抓取时系统crash的情况.找前同事了解到perf工具导致系统crash的一种情况, perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误. 之前文档上的perf命 ...
- JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备
1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...
- iOS Sprite Kit教程之申请和下载证书
iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...