Django перенаправить на указанный c URL после регистрации - PullRequest
0 голосов
/ 11 марта 2020

Добрый день.

Я пытаюсь перенаправить пользователя на указанный c URL, который в моем случае равен rootPath/dashboard/

Но когда пользователь регистрируется, меня перенаправляют на /user/register/dashboard/

Я искал другие темы, связанные со стековым потоком, по той же проблеме, но они не решили мою проблему.

Я определил эти параметры в settings.py

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

views.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')

urls.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 %}

1 Ответ

1 голос
/ 11 марта 2020

Вы можете перенаправить на любой указанный c URL с помощью redirect , например

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

, если указан app_name, он будет выглядеть следующим образом

 return redirect('app_name:url_name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...