前言

如打开博客园按时间分类标签页【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的作用的更多相关文章

  1. [js开源组件开发]query组件,获取url参数和form表单json格式

    query组件,获取url参数和form表单json格式 距离上次的组件[js开源组件开发]ajax分页组件一转眼过去了近二十天,或许我一周一组件的承诺有了质疑声,但其实我一直在做,只是没人看到……, ...

  2. django学习-5.获取url参数和name的作用

    1.前言 假如我们要打开这两个博客园地址:[https://www.cnblogs.com/xiamen-momo/archive/2020/11.html].[https://www.cnblogs ...

  3. python测试开发django-16.JsonResponse返回中文编码问题

    前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...

  4. python测试开发django-rest-framework-63.基于函数的视图(@api_view())

    前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...

  5. python测试开发django-15.查询结果转json(serializers)

    前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...

  6. 2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  7. python测试开发django-197.django-celery-beat 定时任务

    前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...

  8. Angularjs中使用$location获取url参数时,遇到的坑~~~

    今天在开发时候,需要用到Angularjs1.4.6获取url参数,网上查了一下,有部分文章提到用$location来获取.大致方法如下 var app = angular.module('myApp ...

  9. python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

    前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...

随机推荐

  1. NopCommerce 执行计划任务不同Services协调操作导致更新数据失败的问题!

    问题描述: 在Nop的计划任务里需要两个任务协调操作 _shipmentService.InsertShipment(shipment); _orderProcessingService.Ship(s ...

  2. CodeIgniter典型的表单提交验证代码

    view内容: <?php echo form_open('user/reg'); ?> <h5>用户名</h5> <input type="tex ...

  3. hdu 4642 翻硬币

    在一个n*m的棋盘上 每一个格子都有一枚硬币 1表示正面 0表示反面你每次可以选择一个硬币为正面的点,然后从该点与右下角点形成的矩阵硬币全都反向,直到一个人没有硬币可以选择则输Alice先手 列举了几 ...

  4. AndroidStudio3.0到3.1遇到的坑

    原文:https://blog.csdn.net/qq_36676433/article/details/80361064 本以为3.0到3.1仅仅是界面的优化,万万没想到的是这个坑比起2.0到3.0 ...

  5. day5模块学习 -- time、datetime时间模块

    1.定义 模块:用来从逻辑上组织python(变量,函数,类,逻辑:实现一个功能)代码,本质就是.py结尾的python文件(文件名:test.py,对应的模块名test) 包:用来从逻辑上组织模块的 ...

  6. Django实战(12):增加目录页,设定统一布局

    针对上一节的新需求,界面设计师还为我们设计了一个新的界面,不仅仅是目录页,还包含了站点的整体风格,如下图: 感谢界面设计师为我们提供的“又黑又硬”的工具条,这个看起来真的很酷.下面,让我们来享用她的工 ...

  7. Kylin启动时错误:Failed to find metadata store by url: kylin_metadata@hbase 解决办法

    一.问题背景 安装kylin后使用命令 $ kylin.sh start 后出现Failed to find metadata store by url: kylin_metadata@hbase的错 ...

  8. 如何使用django显示一张图片

    django显示图片对新手来说真的算是一个坑.. 这里记录下小白爬坑的历程. 首先,你需要一个可以运行的django服务器,能显示正常的html文本,无法显示图片 这是html的文本,可以显示文字,无 ...

  9. 牛客练习赛1 A - 矩阵

    链接:https://www.nowcoder.com/acm/contest/2/A来源:牛客网 题目描述 给出一个n * m的矩阵.让你从中发现一个最大的正方形.使得这样子的正方形在矩阵中出现了至 ...

  10. Moo University - Financial Aid POJ 2010 优先队列(最大堆)

    题目:http://poj.org/problem?id=2010 题目大意: 奶牛上大学.因为经济问题,每头奶牛都需要一定的补助需求,学校会提供一定的资金用于补助 每头牛都有自己的分数,学校招收的名 ...