Python 带有查询参数的Django next

Python 带有查询参数的Django next,python,django,redirect,Python,Django,Redirect,我的网站有一个页面列表,这些页面在/record下,并且只能使用类型和id的查询参数。如下所示: /记录?类型=诗歌,id=175 我使用django next重定向从登录页面转到上一页面。我最初使用href={%url'auth:login'%}?next={{request.path}}重定向,但它没有使用查询参数,即type和id。这将使用户 /登录/?下一步=/record 然后我使用了href='{%url'身份验证:登录'%}?next={{request.path}}'+windo

我的网站有一个页面列表,这些页面在/record下,并且只能使用类型和id的查询参数。如下所示:

/记录?类型=诗歌,id=175

我使用django next重定向从登录页面转到上一页面。我最初使用href={%url'auth:login'%}?next={{request.path}}重定向,但它没有使用查询参数,即type和id。这将使用户

/登录/?下一步=/record

然后我使用了href='{%url'身份验证:登录'%}?next={{request.path}}'+window.location.search。然而,这并不奏效。这将使用户

/登录/?下一步=/record?type=poem&id=175

但它最终转向了

/记录

如何使用next和查询参数重定向?此行为不可能吗?

您可以使用方法和模板筛选器来获取当前url以及查询字符串

返回路径以及附加的查询字符串(如果适用)

您可以使用方法和模板筛选器来获取当前url以及查询字符串

返回路径以及附加的查询字符串(如果适用)


您需要转义URL中的特殊字符,即“?”、“&”和“=”。 虽然有,但它并没有逃过符号&,这是一个问题,因为它将被解释为下一个参数的结束和另一个参数的开始

相反,您可以使用:

在模板中:

href="{% url 'auth:login' %}?next={{ current_url_escaped }}

您需要转义URL中的特殊字符,即“?”、“&”和“=”。 虽然有,但它并没有逃过符号&,这是一个问题,因为它将被解释为下一个参数的结束和另一个参数的开始

相反,您可以使用:

在模板中:

href="{% url 'auth:login' %}?next={{ current_url_escaped }}

根据我的记忆,你能试试:请求。获取完整路径吗?请求。获取完整路径*你的意思是。但是,这样做与使用widow.location.search的效果相同。它首先把我带到/login/?next=/record?type=poem&id=171,但最后把我带到/record,好像忽略了查询参数一样。这个?next={request.get_full_path | urlencode}}应该是理想的情况。你能展示一下你写的视图和你的设置吗。py模板\u上下文\u处理器?它正在工作。这就是为什么我首先要访问/login/?next=/record?type=poem&id=171。但是,在我登录之后,它会简单地重定向到/record,忽略查询参数。我确实有django.core.context\u processors.request在模板\u context\u处理器中,所以这不是问题。使用urlencode,/login/?next=/record?type=poem&id=171只需更改为/login/?next=/record%3Ftype%3dproem%26id%3D170。但最后都重定向到/recordOut我记得,你能试试:request.get_full_path吗?request.get_full_path*你是说。但是,这样做与使用widow.location.search的效果相同。它首先把我带到/login/?next=/record?type=poem&id=171,但最后把我带到/record,好像忽略了查询参数一样。这个?next={request.get_full_path | urlencode}}应该是理想的情况。你能展示一下你写的视图和你的设置吗。py模板\u上下文\u处理器?它正在工作。这就是为什么我首先要访问/login/?next=/record?type=poem&id=171。但是,在我登录之后,它会简单地重定向到/record,忽略查询参数。我确实有django.core.context\u processors.request在模板\u context\u处理器中,所以这不是问题。使用urlencode,/login/?next=/record?type=poem&id=171只需更改为/login/?next=/record%3Ftype%3dproem%26id%3D170。但最终两者都重定向到/recorddo,其工作原理与使用widow.location.search相同。它首先将我带到/login/?next=/record?type=poem&id=171,但最后将我带到/record,好像忽略了查询参数一样。请检查在登录视图中,重定向到下一个url时是否保留了参数。保留参数是什么意思?具体怎么做?重定向到下一个url时,还应将url参数添加到下一个url,以便将其传递到/record url。这样做与使用widow.location.search相同。它首先将我带到/login/?next=/record?type=poem&id=171,但最后将我带到/record,好像忽略了查询参数一样。请检查在登录视图中,重定向到下一个url时是否保留了参数。保留参数是什么意思?我该怎么做呢?当重定向到下一个url时,您还应该将url参数添加到下一个url,以便将其传递到/record url。
href="{% url 'auth:login' %}?next={{ current_url_escaped }}