python测试开发django-4.获取url参数和name的作用

时间:2021-12-14 10:06:51

前言

如打开博客园按时间分类标签页【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

python测试开发django-4.获取url参数和name的作用

正则匹配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)

python测试开发django-4.获取url参数和name的作用

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页

python测试开发django-4.获取url参数和name的作用

如果在页面里面把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. &lbrack;js开源组件开发&rsqb;query组件&comma;获取url参数和form表单json格式

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

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

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

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

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

  4. python测试开发django-rest-framework-63&period;基于函数的视图&lpar;&commat;api&lowbar;view&lpar;&rpar;&rpar;

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

  5. python测试开发django-15&period;查询结果转json&lpar;serializers&rpar;

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

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

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

  7. Angularjs中使用&dollar;location获取url参数时,遇到的坑~~~

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

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

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

  9. python测试开发django-36&period;一对一&lpar;OneToOneField&rpar;关系查询

    前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...

随机推荐

  1. bash编程之多分支if 语句及for循环

    第十七章.bash编程之多分支if 语句及for循环 if语句三种格式 多分支if语句练习 for循环 17.1.if语句的三种格式 单分支if语句 if condition;then 条件为真执行的 ...

  2. 解决jquery1&period;9不支持browser对象的问题&vert;&vert;TypeError&colon; &dollar;&period;browser is undefined

    在插件的源代码里插入如下代码: (function(jQuery){ if(jQuery.browser) return; jQuery.browser = {}; jQuery.browser.mo ...

  3. java&period;rmi&period;NoSuchObjectException&colon; no such object in table

    jmx链接的时候,最简单的例子都行不通,郁闷,出现了: 参考:http://reiz6153.blog.163.com/blog/static/401089152009442723208/ 代码: M ...

  4. Spring集成memcached的详细介绍

    前提条件:工程需要引入jar包java_memcached-release_2.0.1.jar 第一步:添加memcached的配置文件. <bean class="org.sprin ...

  5. 《STL源码剖析》笔记

    STL六大组件 1.容器(container):各种数据结构,如vector,list,deque,set,map等 2.算法(algorithm):各种常用算法如sort,search,copy,e ...

  6. HW4&period;20

    public class Solution { public static void main(String[] args) { boolean isPrime = true; int count = ...

  7. 28、Jquery 页面效果

    Jquery动画函数分为三类 基本动画函数 基本动画函数包括show(显示).hide(隐藏).toggle(切换)这三个函数. 例子所需html <input type="butto ...

  8. Android中的四层架构,五块区域

    1. Linux内核层Android系统是基于Linux 2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.Wi-Fi驱动.电源管理等.2 ...

  9. PHP中file&lowbar;exists&lpar;&rpar;函数不能检测包含中文的文件名的解决办法

    版权声明:本文为博主原创文章,未经博主允许不得转载.          PHP中一般使用file_exists()判断某个文件或者文件夹是否存在,如果文件或文件夹存在则返回true,不存在则返回fal ...

  10. &lbrack;BZOJ1385&rsqb; &lbrack;Baltic2000&rsqb; Division expression &lpar;数学&rpar;

    Description 除法表达式有如下的形式: X1/X2/X3.../Xk 其中Xi是正整数且Xi<=1000000000(1<=i<=k,K<=10000) 除法表达式应 ...