django中redirect_field_value是啥意思
Posted
技术标签:
【中文标题】django中redirect_field_value是啥意思【英文标题】:What is the meaning of redirect_field_value in djangodjango中redirect_field_value是什么意思 【发布时间】:2018-09-25 03:33:54 【问题描述】:这段代码是什么意思?
% if redirect_field_value %
<input type="hidden" name=" redirect_field_name " value=" redirect_field_value " />
% endif %
【问题讨论】:
这是处理此表单后提供重定向url的一种方式。不是原生 django 变量。可能是像 allauth 这样的插件的一部分 此代码位于 pinax signup.html 文件中 是的,但你明白吗? 【参考方案1】:当我们使用 django-allauth 库时,上面的 html 片段可用于从 django 应用程序Example in SO 注销,redirect_field_value 用于在表单中发布到 URL account_logout 或 account/logout 并且它的关联视图需要注意动作
注意:默认情况下,redirect_field_name = 'next' 传递给函数 get_next_redirect_url 以获取重定向 url。
class LogoutView(TemplateResponseMixin, View):
template_name = "account/logout." + app_settings.TEMPLATE_EXTENSION
redirect_field_name = "next"
def post(self, *args, **kwargs):
#self.get_redirect_url method is called by passing the redirect_field_name='next'
#which is used further to logout the authenticated user
url = self.**get_redirect_url()**
if self.request.user.is_authenticated:
self.logout()
response = redirect(url)
return _ajax_response(self.request, response)
def logout(self):
adapter = get_adapter(self.request)
adapter.add_message(
self.request,
messages.SUCCESS,
'account/messages/logged_out.txt')
adapter.logout(self.request)
def get_redirect_url(self):
return (
get_next_redirect_url(
self.request,
**self.redirect_field_name**) or get_adapter(
self.request).get_logout_redirect_url(
self.request))
正如我所见,每个视图(SignUp、Login、Logout)都定义了默认的 rediect_field_name,因此在执行注销操作时删除上面的标签仍然有效。
<form method="post" action="% url 'account_logout' %">
% csrf_token %
<!-- % if redirect_field_value %
<input type="hidden" name="redirect_field_name" value="redirect_field_value">
% endif % -->
<button type="submit" class="nav-link btn btn-sm sgp">SignOut</button>
</form>
【讨论】:
以上是关于django中redirect_field_value是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
在标题 Django 管理工具中隐藏 Django 徽标/名称
django 3和django通道中的SynchronousOnlyOperation错误