这是我的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 . 知道为什么吗?