Django-rest-auth - Angular - внутренняя ошибка 500
Более или менее, я нахожусь на ранней стадии разработки приложения, которое использует Django Rest Framework и Angular. Я решил использовать django-rest-auth для управления всей моей интеграцией пользователей с моим приложением.
Поскольку я новичок в Angular, я не хочу использовать приложение django-rest-auth Boilerplate Angular для понимания концепций Angular. Я просто хочу использовать конечные точки django-rest-auth.
Проблема в том, что моя форма регистрации проходит через Внутренний сервер 500, даже если мои данные переданы и успешно отправлены в модель django.User.
Вот мой угловой р р:
// MODULE
var menuApp = angular.module('menuApp', ['ngRoute', 'ngCookies']);
//ROUTES
menuApp.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false,
hashPrefix:'!'
})
$routeProvider
.when('/', {
templateUrl: '/static/app/pages/login.html',
controller: 'homeCtrl'
})
.when('/register', {
templateUrl: 'static/app/pages/register.html',
controller: 'registerCtrl'
})
menuApp.controller('homeCtrl', ['$log', '$scope', function($log, $scope) {
$log.info("homeCtrl is called ");
}]);
menuApp.controller('registerCtrl', ['$scope', '$cookies', '$http','$location',
function($scope, $cookies, $http, $location) {
console.log("registerCtrl is called");
$scope.register = function(email, username, password){
var data = {
'username': username,
'password1': password,
'password2': password,
'email': email
}
console.log(data)
var make_registration = $http({
url: "/api/rest-auth/registration/",
method: "POST",
headers: {
'X-CSRFToken': $cookies.token,
'Content-Type': 'application/json'},
data: data,
})
.success(function(data, status, headers) {
console.log($cookies.csrftoken)
console.log(data);
console.log(status);
console.log(headers);
})
.error(function(data, status, headers) {
// Need a minimal function to pass the errors
console.log(status);
console.log(data);
});
return make_registration
}
}]);
// RUN
menuApp.run(function ($http) {
$http.defaults.xsrfHeaderName = 'X-CSRFToken';
$http.defaults.xsrfCookieName = 'csrftoken';
});
Моя форма очень проста: ng-submit="register(email, username, password)" и 3 входа ng-model= "email" и т. Д.
Мои URL:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^api/rest-auth/', include('rest_auth.urls')),
url(r'^api/rest-auth/registration/',
include('rest_auth.registration.urls')),
url('^.*$', IndexView.as_view(), name='index'),
)
2 ответа
У меня была точно такая же проблема, и оказалось, что внутренняя ошибка 500 возникла, когда django-allauth
попытался отправить электронное письмо с подтверждением, но не получилось, потому что у меня не работал сервер STMP.
Предполагая, что ваша проблема похожа на мою, просто добавьте эту строку на settings.py
:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Тебе нужно django-allauth
для регистрации на работу.
из документов
Регистрация (необязательно)
Если вы хотите включить стандартный процесс регистрации, вам нужно будет установить django-allauth
- видеть это doc
для установки Add allauth
, allauth.account
а также rest_auth.registration
приложения для INSTALLED_APPS
в вашем django
settings.py: