Проблема с протоколированием с помощью auth_views.loginView в Django

Когда я пытаюсь войти в систему через LoginView, процесс кажется успешным. Я перенаправляюсь на LOGIN_REDIRECT_URL.

urlpatterns = [
    ...
    path('login', auth_views.LoginView.as_view(), name='login'),
]

Но когда я пытаюсь получить доступ к представлению, которое требует входа, я перенаправляюсь на страницу входа. Когда я вывожу request.user.id в представлении, это также None.

class MyView(viewsets.ViewSet):

@method_decorator(login_required(login_url='/login'))
def list(self, request, server_id):
    ....    

Что я упускаю? Спасибо.

Вот моя форма входа.

<form method="POST" action="{% url 'login' %}">
    {% csrf_token %}
    <div class="form-group">
        <label>Username</label>
        <input type="text" class="form-control" id="username" name="username" placeholder="Username">
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" name="password" id="password" class="form-control" placeholder="Password">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

Попробуйте что-нибудь вроде этого:

from rest_framework.permissions import IsAuthenticated


class MyView(viewsets.ViewSet):
    permission_classes = [IsAuthenticated]

    def list(self, request, server_id):
    ....    

ViewSet - это класс djangoREST, и иногда есть некоторые различия в использовании между стандартными django и djangoREST представлениями/другими компонентами.

Вернуться на верх