这是我的URLS.py:

from django.conf.urls import url
from django.conf.urls import include
from CMSApp import views

urlpatterns = [
    url(r'^$', views.HomePageView.as_view()),
    url(r'^users$', views.user_list.as_view()),
    url(r'^users/(?P<pk>[0-9]+)$', views.user_detail.as_view()),
    url(r'^api-auth/', include('rest_framework.urls',
                                   namespace='rest_framework')),
]

所以要登录,我使用URL / api-auth / login . 当我进入/ api-auth / login时,我看到了DRF登录界面 . 如果我输入了错误的用户名和密码,它会说:

Please enter a correct username and password. Note that both fields may be case-sensitive.

如果我输入正确的用户名和密码,它会将页面重定向到我的settings.py中的LOGIN_REDIRECT_URL,因此这部分有效 .

但是,我希望能够在不访问DRF登录页面的情况下登录 . 当用户访问时

127.0.0.1/

这个视图被调用:

class HomePageView(TemplateView):
    template_name = "home.html"

    def get_context_data(self, **kwargs):
            context = super(HomePageView, self).get_context_data(**kwargs)
            return context

这是我的home.html:

<h3>Login</h3>
<form ng-submit="ctrl.loginUser()" name="myLoginForm">
    <div class="form-group">
        <label>Username</label>
        <input type="text" name="uname" class="form-control" ng-model="ctrl.user.username" required> 
    </div>

    <div class="form-group">
        <label>Password</label>
        <input type="password" name="pwd" class="form-control" ng-model="ctrl.user.password" required>
    </div>

    <input type="submit" value="Login"> 
</form>

<script>
angular.module("notesApp", [])
    .config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.xsrfCookieName = 'csrftoken';
        $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
    }])

    .controller("MainCtrl", ["$http", function($http) {
    var self = this;
    self.users = {};
    var fetchUsers = function() {
        return $http.get("/CMS/users").then(function(response) { // get list of existing users
            self.users = response.data;
        }, function(errResponse) {
        console.error("Error while fetching users.");
        });
    };

    self.loginUser = function() {
        $http.post("/CMS/api-auth/login/", self.user)
        .error(function(data, status, headers, config) {
            console.log(data);
         })
        .then(fetchUsers);

        console.log("Success Login with ", self.user);
    };
    }]);
</script>

问题是,如果用户输入了错误的用户名和密码,console.log上会出现“使用self.user登录成功”,并且没有错误消息 . 最重要的是,如果用户使用正确的用户名和密码登录,则用户不会被重定向到LOIGN_REDIRECT_URL . 知道为什么吗?