Django从理论到实战(part14)--url反转
学习笔记,仅供参考,有错必纠
参考自:Django打造大型企业官网;
本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写一下。
url反转
之前我们都是通过url来访问视图函数,有时候我们知道这个视图函数,但是想反转回他的url,这时候就可以通过reverse
来实现。
例如,我们在front应用的urls.py中定义路由:
from django.urls import path
from . import viewsapp_name = 'front'urlpatterns = [path('', views.index),path('login/', views.login, name = "signin"),
]
在cms应用的urls.py中定义路由:
app_name = 'cms'urlpatterns = [path('', views.index),path('login/', views.login, name = "signin"),
]
在front应用的views.py模块中定义一个视图函数:
def index(request):username = request.GET.get("username", "")if username:return HttpResponse("front首页")else:login_url = reverse('cms:signin')#利用url的name参数反转得到相应的urlprint("-+"*15)print(login_url)print("-+"*15)return redirect(login_url)
向http://127.0.0.1:8000/front/发起请求后,控制台的输出:
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/cms2/login/
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
如果这个url中需要传递参数,那么可以通过reverse函数中的kwargs
来传递参数。
例如,我们在front应用的urls.py中定义路由:
from django.urls import path
from . import viewsapp_name = 'front'urlpatterns = [path('show/<show_id>/', views.show, name = "show"),path('test/', views.test, name = "test"),
]
在views.py模块中我们定义一个视图函数test:
def show(request, show_id):return HttpResponse("ID为:{}".format(show_id))def test(request):username = request.GET.get("username", "")if username: return HttpResponse("测试页面")else:login_url = reverse('front:show', kwargs={"show_id":1})#利用url的name参数反转得到相应的urlprint("-+"*15)print(login_url)print("-+"*15)return redirect(login_url)
向http://127.0.0.1:8000/front/test/发起请求后,控制台的输出:
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/front/show/1/
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
同时,由于django
中的reverse
函数反转url
时,不区分GET
请求和POST
请求,因此不能在反转的时候添加查询字符串的参数。
如果想要添加查询字符串的参数,只能手动的添加,例如:
login_url = reverse('login') + "?next=/"
Django从理论到实战(part14)--url反转相关推荐
- Django从理论到实战(part10)--URL命名与反转
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part8)--URL中添加参数
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part7)--关于视图函数与URL映射
学习笔记,仅供参考 参考自:Django打造大型企业官网:URL映射 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽 ...
- Django从理论到实战(part19)--DTL模板语法
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y:官方文档 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在 ...
- Django从理论到实战(part15)--自定义path转换器
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part12)--应用命名空间和实例命名空间
学习笔记,仅供参考 参考自:Django打造大型企业官网: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的写 ...
- Django从理论到实战(part22)--include模板标签
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part54)--MEDIA_ROOT和MEDIA_URL
学习笔记,仅供参考,有错必纠 引用:使用模型来处理上传的文件:Django static静态配置文件 MEDIA_ROOT和MEDIA_URL 变量解释 MEDIA_ROOT:指定用户上传文件的本地路 ...
- Django从理论到实战(part50)--使用模型来处理上传的文件
学习笔记,仅供参考,有错必纠 文章目录 使用模型来处理上传的文件 `MEDIA_ROOT`和`MEDIA_URL` 限制文件的扩展名 使用模型来处理上传的文件 在定义模型的时候,我们可以给存储文件的字 ...
最新文章
- socket与TcpListener/TcpClient/UdpClient 的区别及联系
- ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL
- html如何让列表呈直线排列,html – 列表分成多列
- 近期活动盘点:工业大数据讲座、大数据自杀风险感知讲座、数据法学研讨会、海外学者短期讲学(12.3-12.13)
- 软件需求分析--三步走
- Linux基础之grep攻坚
- iOS物理碰撞、唱吧音频处理、仿淘宝联动效果等源码
- hdu 2112 HDU Today 最短路(Dijkstra算法)
- <马哲>劳动价值论的理论及实践意义
- cuda、cudnn相关问题链接
- 第十二篇 Android 系统电话管理机制一--工厂模式和代理模式
- oracle分页的三种方式,oracle 使用rownum的三种分页方式
- Asp.net自定义控件开发任我行(7)-注册自定义事件
- 如何用计算机解一元三次方程,利用Excel电子表格解一元三次方程
- 超级HOOK技术无需分析基址
- grads 相关系数_GrADS实习报告6
- 我来告诉你,一个草根程序员如何进入BAT
- 2021爱智先行者—人体存在感传感器
- 突破技术限制,实现Web端静默打印
- 基于Java+SpringBoot+vue实现图书借阅和销售商城一体化系统