Django логин перенаправляет на страницу логина - PullRequest
0 голосов
/ 24 апреля 2020

Во время разработки я смог войти в систему и выйти из системы просто отлично. Однако на производстве я испытываю некоторые головные боли. Когда я захожу, страница просто перезагружается.

У меня настроено перенаправление на домашнюю страницу при входе в систему, и все, что мне было нужно до этого, было:

urls.py

urlpatterns = [
    path("", include('main.urls')),
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')), # For /accounts/login page
]  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

шаблоны / регистрация / логин. html

{% extends "base.html" %}

{% block content %}

<div class="container">
 <div class="card">

    {% if form.errors %}
    <p>Your username and password didn't match. Please try again.</p>
    {% endif %}

    {% if next %}
    {% if user.is_authenticated %}
    <p>Your account doesn't have access to this page. To proceed,
      please login with an account that has access.</p>
    {% else %}
    <p>Please login to see this page.</p>
    {% endif %}
    {% endif %}

    <form method="post" action="{% url 'login' %}">
      {% csrf_token %}
      {{ form|crispy }}
      <button type="submit" class="btn btn-success"><i class="fas fa-sign-in-alt"></i> Login</button>
      <input type="hidden" name="next" value="{{ next }}" />
    </form>

    {# Assumes you setup the password_reset view in your URLconf #}
    <p><a href="{% url 'password_reset' %}">Lost password?</a></p>
</div>
</div>

{% endblock content %}

1 Ответ

0 голосов
/ 24 апреля 2020

Я делаю что-то подобное, это хорошо мне подходит для работы, вам не нужно вносить какие-либо изменения, связанные с аутентификацией пользователя, во внешний интерфейс, а скорее в представления.

class LoginView(FormView):
    form_class = SignInForm
    success_url = 'userhome'
    template_name = 'users/signin.html'

    def form_valid(self, form):
        request = self.request
        next_ = request.GET.get('next')
        next_post = request.POST.get('next')
        redirect_path = next_ or next_post or None
        email = form.cleaned_data.get("email")
        password = form.cleaned_data.get("password")
        user = authenticate(request, username=email, password=password)
        if user is not None:
            login(request, user)
            try:
                del request.session['guest_email_id']
            except:
                pass
            if is_safe_url(redirect_path, request.get_host()):
                return redirect(redirect_path)
            else:
                return redirect("userhome")
        return super(LoginView, self).form_invalid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...