Python中url标签使用详解

url标签:

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'),

]
浏览器中查看结果:



原文地址:https://www.cnblogs.com/guyan-2020/p/12199323.html

时间: 2024-09-30 15:24:51

Python中url标签使用详解的相关文章

Python中autoescape标签使用详解

1.spaceless标签:移除html标签中的空白字符.包括空格.tab键.换行符,示例代码如下: {% spaceless %}具体内容{% endspaceless %} 2.autoescape标签:DTL模板中默认已经开启了自动转义,会将那些特殊字符串进行转义,比如会将"<"转义成<会将">"转移成">",使用DTL的自动转义,可以使网站不容易出现XSS漏洞. 如果变量是可信任的,那么可以使用"auto

Python中verbaim标签使用详解

verbatim标签:默认在"DTL"模板中是会去解析那些特殊字符串的,比如{% 和 %}以及{{等.如果你在某个代码片段中不想使用"DTL"的解析引擎,那么就可以把这个代码片段放在"verbatim"标签中,之后在使用特定的解析引擎进行解析.示例代码如下: {% verbatim %} {{ Hello World! }} {% endverbatim %} 运行结果如下所示: 原文地址:https://www.cnblogs.com/guya

Python中 if __name__ == &#39;__main__&#39;: 详解

一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行和作为模块被其他模块调用. __name__:每一个模块都有一个内置属性__name__.而__name__的值取决与python模块(.py文件)的使用方式. 如果是直接运行,那么这个模块的__name__值就是“__main__”: 如果是作为模块被其他模块调用,那么这个模块(.py文件)的__name__值就是该模块(.py文件)的文件名,且不带路径和文件扩展名. 参考: ht

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

Python中的getattr()函数详解:

Python中的getattr()函数详解: getattr(object, name[, default]) -> value Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y. When a default argument is given, it is returned when the attribute doesn't exist; without it, an exception i

Python中格式化format()方法详解

Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加; 使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等; 还可以添加特定的字母, 如: 'b' - 二进制. 将数字以2为基数

Python中标准模块importlib详解

Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer). 什么是imp? 另外有一个叫做imp的模块,它提供给Python import语句机制的接口.这个模块在Python 3.4中被否决,目的就是为了只使用importlib. 这个模块有些复杂,因此我们在这

Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: &#39;self&#39;的问题解决

https://blog.csdn.net/songlh1234/article/details/83587086 下面总结一下self的用法详解,大家可以访问,可以针对平时踩过的坑更深入的了解下. https://blog.csdn.net/CLHugh/article/details/75000104, Python中self的用法详解,或者总是提示:TypeError: add() missing 1 required positional argument: 'self'的问题解决 原文

python中的tcp示例详解

python中的tcp示例详解  目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TCP通信需要经过创建连接.数据传送.终止连接三个步骤. TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发