【问题标题】: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 文件中
  • 是的,但你明白吗?

标签: django django-templates django-views


【解决方案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>

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 2022-12-20
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多