0

再会。

我正在尝试将用户重定向到特定的 url,在我的情况下是rootPath/dashboard/

但是当用户注册时我被重定向到/user/register/dashboard/

我已经搜索了有关相同问题的其他 stackoverflow 主题,但它们没有解决我的问题。

我已经在settings.py

LOGIN_URL = 'user/login/'
LOGOUT_URL = 'user/logout/'
LOGIN_REDIRECT_URL = 'dashboard/'

视图.py

def register(request):
    form = RegisterForm(request.POST or None)
    if request.POST:
        if form.is_valid():
            data = form.cleaned_data
            email = data['email']
            pwd = data['password']
            user = User(email=email, password=pwd)
            user.save()
            return redirect(settings.LOGIN_REDIRECT_URL)
    return render(request, 'registration/register.html', context={'form': form})



@login_required
def dashboard(request):
    return render(request, 'user/dashboard.html')

网址.py

urlpatterns = [
    path('user/login/', CustomLoginView.as_view(), name='login'),
    path('user/logout/', auth_logout, name='logout'),
    path('user/register/', register, name='register'),
    path('dashboard/', dashboard, name='dashboard')

]

注册.html

{% extends 'base.html' %}
{% load static %}

{% block content %}
    <div class="container text-center">
        {% if form.errors %}
            {% for field in form %}
                {% for error in field.errors %}
                    <div class="alert alert-danger">
                        <strong>{{ error|escape }}</strong>
                    </div>
                {% endfor %}
            {% endfor %}
            {% for error in form.non_field_errors %}
                <div class="alert alert-danger">
                    <strong>{{ error|escape }}</strong>
                </div>
            {% endfor %}
        {% endif %}
        <h1 class="h3 mb-3 font-weight-normal">Register</h1>
        <form class="form-signin" action="." method="post">
            {{ form.as_p }}
            {% csrf_token %}
            <p><input type="submit" value="Register" class="btn btn-primary"></p>
            {#        <a href="{% url 'user:forgot-password' %}"><input type="button" value="Forgot Password"></a>#}
        </form>
    </div>
{% endblock %}
4

1 回答 1

1

您可以像这样使用重定向重定向到任何特定的网址

 return redirect('dashboard') #return redirect('url_name')

如果app_name提供了它会是这样的

 return redirect('app_name:url_name')
于 2020-03-11T07:19:42.523 回答