覆盖Django allauth注册"下一步"重定向URL

awi*_*ery 10 django django-allauth

假设用户在/some_url/django-allauth网站的页面上.点击"登录"后,他们会收到以下网址:

/accounts/login/?next=/some_url/
Run Code Online (Sandbox Code Playgroud)

如果他们已经是注册用户,在登录后,他们会被发送到/some_url/,这很好.

但如果他们没有注册,他们点击"注册",他们会被发送到:

/accounts/signup/?next=/some_url/
Run Code Online (Sandbox Code Playgroud)

假设我想在用户/onboarding/注册后立即向用户发送一些入职体验.

什么是覆盖allauth默认行为的最简单方法,/onboarding/即使next=/some_url/指定了a ,也会将用户发送给用户?

Sel*_*cuk 16

最简单的方法是account/signup.html使用您自己的副本覆盖模板.如果您检查该模板,您将看到以下部分:

{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
{% endif %}
Run Code Online (Sandbox Code Playgroud)

如果删除if/ endifpart并更改其中的值,即使您next在URL中传递参数,注册页面也会重定向到特定页面:

<input type="hidden" name="{{ redirect_field_name }}" value="/onboarding/" />
Run Code Online (Sandbox Code Playgroud)

  • @alpalalpal 因为`{{ redirect_field_name }}` 是_通常_`next`,但它不一定是。它可能已使用 `login_required` 装饰器进行了更改,例如:`@login_required(redirect_field_name='next_url')` (2认同)