django的render函数_reverse函数用法

django的render函数_reverse函数用法reverse函数reverse函数的作用是用来进行URL反转的,接下来我们介绍reverse函数的几种用法之前我们都是通过url来访问视图函数。有时候我们知道这个视图函数,但是想反转回他的url

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

reverse函数

reverse函数的作用是用来进行URL反转的,接下来我们介绍reverse函数的几种用法
 

  1. 之前我们都是通过url来访问视图函数。有时候我们知道这个视图函数,但是想反转回他的url。这时候就可以通过reverse来实现。示例代码如下:
reverse("list")
> /list/
  1. 如果有应用命名空间或者有实例命名空间,那么应该在反转的时候加上命名空间。示例代码如下:
reverse('book:list')
> /book/list/
  1. 如果这个url中需要传递参数,那么可以通过kwargs来传递参数。示例代码如下:
reverse("front:articles",kwargs={"id":1})
> /front/articles/1
  1. 因为django中的reverse反转url的时候不区分GET请求和POST请求,因此不能在反转的时候添加查询字符串的参数。如果想要添加查询字符串的参数,只能手动的添加。示例代码如下:
login_url = reverse('login') + "?next=/"

接下来我们模仿知乎做个小案列,我们访问知乎首页https://www.zhihu.com/,如果你未登录,网站会重定向到https://www.zhihu.com/signin?next=%2F登录页面,接下来我们实现这个功能

# urls.py
app_name = "front"
urlpatterns = [
    path('', views.index, name="index"),
    path('signIn/', views.login, name="login"),
]

# views.py
def index(request):
    username = request.GET.get('username')
    if username:
        return HttpResponse("front首页")
    else:
        return redirect(reverse('front:login')  + "?next=/")

def login(request):
    return HttpResponse('front登录页面')

接下来我们通过浏览器访问127.0.0.1/front/,页面会自动重定向到127.0.0.1:8000/front/signIn/?next=/,我们可以通过pycharm的控制台清楚的看到重定向的过程

[14/May/2021 09:46:58] "GET /front/ HTTP/1.1" 302 0
[14/May/2021 09:46:58] "GET /front/signIn/?next=/ HTTP/1.1" 200 17
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/165052.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux下安装tomcat并进行配置

    linux下安装tomcat并进行配置linux下安装tomcat并进行配置

    2022年5月5日
    54
  • Spring3.0MVC+MyBatis3.0+Spring3.0(全注解列子)

    Spring3.0MVC+MyBatis3.0+Spring3.0(全注解列子)

    2021年8月12日
    51
  • udp数据包大小问题

    udp数据包大小问题参考 UDP 数据包大小问题几个关键点 1 以太网 Ethernet 在数据链路层 数据帧的长度必须在 46 1500 字节之间 这个 1500 字节被称为链路层的 MTU 最大传输单元 已经减去首部和尾部的 18 字节 这个 1500 字节就是网络层 IP 数据报的长度限制 因为 IP 数据报的首部为 20 字节 所以 IP 数据报的数据区长度最大为 1480 字节 而这个 1480 字节就是用来放 TCP 传来的 TCP 报文段或 UD

    2025年10月22日
    3
  • js匿名函数和立即执行函数[通俗易懂]

    js匿名函数和立即执行函数[通俗易懂]js匿名函数和立即执行函数1.匿名函数a)写法b)特点2.立即执行函数a)写法b)特点c)示例1.匿名函数匿名函数又叫拉姆达函数,使用前需要先赋值。a)写法 //hello();//会报错,因为定义在后,使用在前。 varhello=function(){ console.log(“hello”); }; hello();//hellob)特点匿名函数…

    2022年9月1日
    2
  • Spring基于接口的动态代理和统一事务处理

    Spring基于接口的动态代理和统一事务处理Spring基于接口的动态代理和统一事务处理

    2022年4月22日
    44
  • RecyclerView使用_recyclerview是什么

    RecyclerView使用_recyclerview是什么本文目录RecyclerView概述RecyclerView使用-基础篇第一步:添加RecyclerView第二步:添加布局文件第三步:添加逻辑代码运行效果RecyclerView使用-进阶篇布局管理器线性布局管理器网格布局管理器ItemDecorationItem动画Item点击RecyclerView使用-高级篇(上拉刷新下拉加载更多)第一步:添加依赖第二步:布局文件第三步:逻辑代码完整代…

    2025年8月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号