python测试开发django-4.获取url参数和name的作用
2021/6/2 22:23:56
本文主要是介绍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
)
如果现在有一个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的作用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门