Python中url标签使用知识点总结


Posted in Python onJanuary 16, 2020

1.在模板中,我们经常要使用一些url,实现页面之间的跳转,比如某个a标签中需要定义href属性。当然如果通过硬编码的方式直接将这个url固定在里面也是可以的,但是这样的话,对于以后进行代码的维护,可能就比较麻烦,因此建议使用这种动态的方式来实现,类似于django中reverse一样。示例代码如下:

<li><a href="/">首页</a></li>
{# 此时采用动态获取url的方式,使用url标签可以在DTL模板中动态获取url,#}
{# 而使用reverse()函数,可以在Django中动态获取url标签,将视图函数进行反转,得到url. #}
 <li><a href="{% url 'book' %}">读书</a></li>
 <li><a href="{% url 'movie' %}">电影</a></li>
 <li><a href="{% url 'city' %}">同城</a></li>

2.如果url进行反转的时候,需要传递参数,那么就可以在后面传递,但是参数有位置参数和关键字参数。位置参数和关键字参数不能同时使用。示例代码如下:

{# url反转,使用位置参数,但是关键字参数和位置参数不能同时使用 #}
 <li><a href="{% url 'detal' 1 %}"></a></li>
 
{# url反转,使用关键字参数 #}
{# 接收url中传递参数,可以在url中直接传递参数,并且指定参数的值,但是此时=两边不能有空格,否者的话,不能识别 #}
 <li><a href="{% url 'detail' book_id='3' %}">最火的一篇文章详情</a></li>

3.如果要在使用url标签反转的时候要传递查询字符串的参数,那么必须要手动在后面添加,示例代码如下:

{# 在模板中使用查询字符串的形式添加参数,此时就只能和reverse()函数一样,只能手动的添加,使url进行拼接。 #}
{# 实现登录成功之后跳转到首页 #}
 <li><a href="{% url 'login' %}?next=/">登录</a></li>

4.如果要传递多个参数,那么可以通过空格的方式进行分割,示例代码如下:

<li><a href="{% url 'detail' book_id='3' author='小蚂蚁' %}">最火的一篇文章详情</a></li>

以下是完整代码实现:

views.py代码如下:

from django.http import HttpResponse
from django.shortcuts import render


def index(request):
 return render(request,'index.html')


# 定义登录视图函数
def login(request):
 next = request.GET.get('next')
 text = "登录完成后,要跳转的页面是:%s" % next
 return HttpResponse(text)


def book(request):
 return HttpResponse('图书页面')


# 在进行访问url的时候进行传递参数视图,直接传入一个参数
def book_detail(request,book_id,author):
 text = '您输入的图书id是:%s,作者是:%s' % (book_id,author)
 return HttpResponse(text)


def movie(request):
 return HttpResponse('电影页面')


def city(request):
 return HttpResponse("同城页面")

index.html代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
  .nav {
   overflow: hidden;
  }
  .nav li {
   float: left;
  {# 将li标签前面的圆点去掉 #}
   list-style: none;
   {# 定义li标签之间的外边距,上下为0,左右为20px #}
   margin: 0 20px;
  }
 </style>
</head>
<body>
<ul class="nav">
 <li><a href="/">首页</a></li>
{# 此时采用动态获取url的方式,使用url标签可以在DTL模板中动态获取url,#}
{# 而使用reverse()函数,可以在Django中动态获取url标签,将视图函数进行反转,得到url. #}
 <li><a href="{% url 'book' %}">读书</a></li>
 <li><a href="{% url 'movie' %}">电影</a></li>
 <li><a href="{% url 'city' %}">同城</a></li>
{# url反转,使用位置参数,但是关键字参数和位置参数不能同时使用 #}
{# <li><a href="{% url 'detal' 1 %}"></a></li>#}
{# url反转,使用关键字参数 #}
{# 接收url中传递参数,可以在url中直接传递参数,并且指定参数的值,但是此时=两边不能有空格,否者的话,不能识别 #}
 <li><a href="{% url 'detail' book_id='3' author="小蚂蚁" %}">最火的一篇文章详情</a></li>
{# 在模板中使用查询字符串的形式添加参数,此时就只能和reverse()函数一样,只能手动的添加,使url进行拼接。 #}
{# 实现登录成功之后跳转到首页 #}
 <li><a href="{% url 'login' %}?next=/">登录</a></li>
</ul>
</body>
</html>

视图函数与url之间的映射:
urls.py代码如下:

from django.urls import path
from . import views

urlpatterns = [
 path('',views.index,name = 'index'),
 path('book/',views.book,name = 'book'),
 path('movie/',views.movie,name = 'movie'),
 path('city/',views.city,name = 'city'),
 path('book/detail/<book_id>/<author>/',views.book_detail,name = 'detail'),
 path('login/',views.login,name = 'login'),

]

浏览器中查看结果:

Python中url标签使用知识点总结

Python中url标签使用知识点总结

Python中url标签使用知识点总结

以上就是本次介绍的全部相关知识点,感谢大家的学习和对三水点靠木的支持。

Python 相关文章推荐
Python中使用select模块实现非阻塞的IO
Feb 03 Python
Python中的ceil()方法使用教程
May 14 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
python修改txt文件中的某一项方法
Dec 29 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
python实现网站微信登录的示例代码
Sep 18 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
python list数据等间隔抽取并新建list存储的例子
Nov 27 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
基于PyQt5制作一个群发邮件工具
Apr 08 Python
PyTorch的SoftMax交叉熵损失和梯度用法
Jan 15 #Python
pytorch方法测试——激活函数(ReLU)详解
Jan 15 #Python
pytorch的batch normalize使用详解
Jan 15 #Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 #Python
Python 中@property的用法详解
Jan 15 #Python
Python字符串中删除特定字符的方法
Jan 15 #Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 #Python
You might like
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 接收处理外带的参数方法
2018/12/03 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
keras slice layer 层实现方式
2020/06/11 Python
快速了解Python开发环境Spyder
2020/06/29 Python
keras的三种模型实现与区别说明
2020/07/03 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
庆七一活动方案
2014/01/25 职场文书
集团财务总监岗位职责
2015/04/03 职场文书
工程款申请报告
2015/05/15 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
golang操作rocketmq的示例代码
2022/04/06 Golang