You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改django-allauth中AddEmailForm的成功跳转URL?

如何修改django-allauth中AddEmailForm的成功跳转URL?

嗨,我来帮你搞定这个跳转问题~你现在遇到的是django-allauth默认跳转的问题,其实有几种简单的方法可以让提交表单后回到你的UserDetail页面,我给你详细说说:

方法一:在表单里添加next隐藏字段(最快实现)

allauth支持通过next参数指定跳转目标,你只需要在你的表单里加一个隐藏输入框,把当前UserDetail页面的URL传进去就行。修改你的模板代码:

<form  method="post" action="{% url 'account_email' %}" class="add_email mt-2">
{% csrf_token %}
{{ form_add_mail|crispy }}
<!-- 添加这个隐藏字段 -->
<input type="hidden" name="next" value="{{ request.path }}">

<div class="flex justify-end mt-2">
    <button type="submit"
        name="action_add"
        class="bg-green-600 hover:bg-green-800 dark:bg-green-600 dark:hover:bg-green-800 font-semibold text-white rounded-sm p-2 text-xs sm:text-sm  sm:px-8 ">
        {% translate "Add E-mail" %}
    </button>
</div>
</form>

如果想更精准(比如避免request.path可能带的额外参数),也可以用你的UserDetail页面的URL反向解析:

<input type="hidden" name="next" value="{% url 'user_detail' username=request.user.username %}">

这里要注意把user_detail换成你实际配置的UserDetailView的URL名称哦。

方法二:自定义AddEmail视图(更灵活的全局控制)

如果希望所有添加邮箱的操作都跳转到用户详情页,或者需要做更多自定义逻辑,可以重写allauth的AddEmailView:

  1. 首先在你的views.py里创建自定义视图:
from allauth.account.views import AddEmailView
from django.urls import reverse

class CustomAddEmailView(AddEmailView):
    def get_success_url(self):
        # 跳转到当前用户的详情页
        return reverse('user_detail', kwargs={'username': self.request.user.username})
  1. 然后在你的urls.py里替换原来的allauth的account_email路由:
from django.urls import path
from .views import CustomAddEmailView

urlpatterns = [
    # 替换默认的account_email路由
    path('accounts/email/', CustomAddEmailView.as_view(), name='account_email'),
    # 你的其他路由...
    path('users/<str:username>/', UserDetailView.as_view(), name='user_detail'),
]

这样不管从哪个页面提交AddEmailForm,成功后都会跳转到用户自己的详情页啦。

方法三:全局配置(最简单的全局设置)

如果你的项目里所有添加邮箱的操作都需要跳转到同一个地方,也可以直接在settings.py里配置:

ACCOUNT_EMAIL_REDIRECT_URL = '/users/{username}/'

allauth会自动把{username}替换成当前用户的用户名,不过这个是全局生效的,适合所有场景都需要统一跳转的情况。

你可以根据自己的需求选其中一种方法,第一种最适合你当前的场景,改改模板就能生效~

备注:内容来源于stack exchange,提问作者JAdel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:08:03