Python Django框架url反向解析实现动态生成对应的url链接示例
作者:houyanhua1 发布时间:2021-08-23 04:30:38
标签:Python,Django,url反向解析
本文实例讲述了Python Django框架url反向解析实现动态生成对应的url链接。分享给大家供大家参考,具体如下:
url反向解析:根据url路由规则,动态生成对应的url链接 (防止硬编码)。
url反向解析应用在两个地方:模板中的超链接,视图中的重定向。
项目名/urls.py(项目的url路由配置,url反向解析,取namespace名字):
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('booktest.urls', namespace='booktest')), # 为对应的应用中的url路由定义namespace名字。
]
应用名/urls.py(应用的url路由配置,为url路由取name名字):
from django.conf.urls import url
from booktest import views
urlpatterns = [
url(r'^index$', views.index, name='index'), # url反向解析,取name名字。
url(r'^show_args/(\d+)/(\d+)$', views.show_args, name='show_args'), # 捕获位置参数
url(r'^show_kwargs/(?P<c>\d+)/(?P<d>\d+)$', views.show_kwargs, name='show_kwargs'), # 捕获关键字参数
]
应用名/views.py(视图,视图函数中使用url反向解析):
from django.shortcuts import render,redirect
from django.core.urlresolvers import reverse # url反向解析
# 视图函数。 视图函数中使用url反向解析,动态生成对应的url。
def test_redirect(request):
# 重定向到/index
# url = reverse('booktest:index')
# 重定向到/show_args/1/2 url中有位置参数
# url = reverse('booktest:show_args', args=(1,2)) # url中拼接位置参数
# 重定向到/show_kwargs/3/4 url中有关键字参数
url = reverse('booktest:show_kwargs', kwargs={'c':3, 'd':4}) # url中拼接关键字参数
return redirect(url)
# return redirect('/index')
templates/应用名/demo.html(模板文件,模板中使用url反向解析):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>url反向解析</title>
</head>
<body>
url反向解析动态生成index链接:<br/>
<a href="{% url 'booktest:index' %}" rel="external nofollow" >首页</a>
url中传递位置参数,动态产生/show_args/1/2:<br/>
<a href="{% url 'booktest:show_args' 1 2 %}" rel="external nofollow" >url中传递位置参数</a><br/>
url中传递关键字参数:/show_kwargs/3/4:<br/>
<a href="{% url 'booktest:show_kwargs' c=3 d=4 %}" rel="external nofollow" >url中传递关键字参数</a>
</body>
</html>
在模板文件中使用url反向解析,格式如下:
{% url 'namespace名字:name名字' %}
例如 {% url 'booktest:fan2' %}
带位置参数:
{% url 'namespace名字:name名字' 位置参数 %}
例如 {% url 'booktest:fan2' 1 %}
带关键字参数:
{% url 'namespace名字:name名字' 关键字参数 %}
例如 {% url 'booktest:fan2' id=1 %}
视图中使用url反向解析(可用于重定向):
from django.core.urlresolvers import reverse
无参数:
reverse('namespace名字:name名字')
如果有位置参数
reverse('namespace名字:name名字', args = 位置参数元组)
如果有关键字参数
reverse('namespace名字:name名字', kwargs=字典)
希望本文所述对大家基于Django框架的Python程序设计有所帮助。
来源:https://blog.csdn.net/houyanhua1/article/details/85009949


猜你喜欢
- 仅结合本人使用场景,方法可能不是最优的1. 忽略本地修改,强制拉取远程到本地主要是项目中的文档目录,看的时候可能多了些标注,现在远程文档更新
- 1. 问题描述:同目录下,当多个文件之间有相互依赖的关系的时候,import无法识别自己写的模块,PyCharm中提示No Module.2
- 您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 g
- python标准库syssys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程
- 虚继承 的概念的提出主要是为了解决C++多继承的问题,举个最简单的例子:class animal{ &nb
- 按位与或(&、|、^):按照二进制进行逻辑运算例如:数字换成二进制,各自位上的0/1进行逻辑运算,得到的结果转换为数字3 &
- 炸金花题目很简单:就是自己写一个程序,实现诈金花游戏的发牌、判断输赢。规则:一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。牌
- 本文实例讲述了原生JS实现的简单轮播图功能。分享给大家供大家参考,具体如下:经过几天的努力,终于攻克了这一难题,于是迫不及待的想要分享给大家
- 这一篇笔记我们简述一下MySQL的B+Tree索引到底是咋回事?聚簇索引索引到底是如何长高的。一点一点看,其实蛮好理解的。如果你看过了我之前
- 前言:如今,大多数计算机都带有多个内核,允许多个线程并行运行计算。即使处理器只有单核,也可以通过并发编程来提升程序的运行效率,比如在一个线程
- 看代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional
- 前言keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。在组件切换过程中将状态保留在内
- 前言由于学校科技立项的项目需要实现Android App端与PHP Web端的简单数据交互的实现,当前场景是Web端使用的是MySql数据库
- 字典d = {key1 : value1, key2 : value2, key3 : value3 }键必须是唯一的,但值则不必。值可以取
- 一起开发项目的时候总是要搭建环境和部署环境的,这个时候必须得有个python第三方包的list,一般都叫做requirements.txt。
- set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。set 语法:class set([it
- 训练的时候内存一直在增加,最后内存爆满,被迫中断。后来换了一个电脑发现还是这样,考虑是代码的问题。检查才发现我的代码两次存了loss,只有一
- 有需要的人可以参考一下,如果试用过,发现问题,欢迎留言告知,不胜感激。功能介绍:1、若页面无刷新,且第一次传值小于第二次传值或者圆环初始化时
- urllib3是一款Python 3的HTTP客户端。Python标准库提供了urllib。在Python 2中,另外提供了urllib2;
- 在做网络训练实验时,有时需要同时将训练曲线和测试曲线一起显示,便于观察网络训练效果。经过很多次踩坑后,终于解决了。具体的方法是:设置两个wr