Как исправить ошибку connection refused при регистрации?
Здравствуйте при регистрации пользователя возникает ошибка (OperationalError at /sign- up/3 [Errno 111] Connection refused)
. Код прилагаю ниже.
urls.py
from django.urls import path
from django.conf import settings
from rest_framework.routers import DefaultRouter
from rest_framework_simplejwt.views import TokenRefreshView, TokenVerifyView
from .views import TemplateAPIView
from . import views
app_name = 'registration_App'
router = DefaultRouter()
urlpatterns = [
path('token/refresh/', TokenRefreshView.as_view()),
path('token/verify/', TokenVerifyView.as_view()),
]
urlpatterns += [
path('simple-signup/1', views.SimpleSignupView.as_view(), name='simple-signup'),
]
urlpatterns += [
path('sign-in/', views.LoginView.as_view(), name='api_login'),
path('sign-up/3', views.SignUpView.as_view(), name='api_sign_up'),
path('sign-up/verify/', views.VerifyEmailView.as_view(),
name='api_sign_up_verify'),
path('password/reset/', views.PasswordResetView.as_view(),
name='api_forgot_password'),
path('password/reset/confirm/', views.PasswordResetConfirmView.as_view(),
name='reset_confirm'),
path('logout/', views.LogoutView.as_view(), name='logout'),
]
urlpatterns += router.urls
if settings.ENABLE_RENDERING:
urlpatterns += [
path('login/', TemplateAPIView.as_view(template_name='login.html'),
name='login'),
path('email-sent/verify/',
TemplateAPIView.as_view(template_name='verification_sent.html'),
name='verify_email_sent'),
path('email-sent/reset/',
TemplateAPIView.as_view(template_name='reset_password_sent.html'),
name='reset_email_sent'),
path('password-reset/<uidb64>/<token>/',
TemplateAPIView.as_view(template_name='reset_password_confirm.html'),
name='pass_reset_confirm'),
path('verify-email/<key>/',
TemplateAPIView.as_view(template_name='email_verification.html'),
name='account_verification'),
]
views.py
class SignUpView(CreateAPIView):
permission_classes = (AllowAny,)
serializer_class = serializers.UserSignUpSerializer
class SimpleSignupView(View):
template_name = 'simple-signup.html'
def get(self, request):
return render(request, self.template_name)
class PasswordResetView(auth_views.PasswordResetView):
serializer_class = serializers.PasswordResetSerializer
class PasswordResetConfirmView(auth_views.PasswordResetConfirmView):
serializer_class = serializers.PasswordResetConfirmSerializer
class VerifyEmailView(_VerifyEmailView):
def get_serializer(self, *args, **kwargs):
return serializers.VerifyEmailSerializer(*args, **kwargs)
Вот setting.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = os.environ.get('EMAIL_HOST', 'smtp.gmail.com')
EMAIL_PORT = int(environ.get("EMAIL_PORT", 465))
EMAIL_HOST_USER = environ.get('EMAIL_HOST_USER', 'ioann.basic@gmail.com')
EMAIL_HOST_PASSWORD = environ.get('EMAIL_HOST_PASSWORD', '19951383ok')
DEFAULT_FROM_EMAIL = environ.get('DEFAULT_FROM_EMAIL', 'ioann.basic@gmail.com')
EMAIL_TIMEOUT = int(environ.get('EMAIL_TIMEOUT', 15))
EMAIL_USE_SSL = int(environ.get('EMAIL_USE_SSL', 1))
EMAIL_USE_TLS = int(environ.get('EMAIL_USE_TLS', 0))
ALLOWED_HOSTS: list = os.environ.get("DJANGO_ALLOWED_HOSTS",
'localhost,127.0.0.1').split(",")
FRONTEND_SITE = 'http://localhost:8000'
ENABLE_RENDERING = int(os.environ.get('ENABLE_RENDERING', 1))
SUPERUSER_EMAIL = os.environ.get('SUPERUSER_EMAIL', 'admin@gmail.com')
SUPERUSER_PASSWORD = os.environ.get('SUPERUSER_PASSWORD', '1524ok')
DEBUG = int(os.environ.get("DEBUG", default=1))
# noinspection PyRedeclaration
ALLOWED_HOSTS: list = os.environ.get("DJANGO_ALLOWED_HOSTS",
'localhost,127.0.0.1').split(",")
signup.js
$(function () {
$('#signUpForm').submit(singUp);
});
const error_class_name = "has-error"
function singUp(e) {
let form = $(this);
e.preventDefault();
$.ajax({
url: form.attr("action"),
type: form.attr("method"),
dataType: 'json',
data: form.serialize(),
success: function (data) {
window.location.href = form.data('href');
},
error: function (data) {
error_process(data);
}
})
}
const error_class_name = "has-error"
function error_process(data) {
$(".help-block").remove()
let groups = ['#firstNameGroup', '#lastNameGroup', '#usernameGroup',
'#emailGroup', '#passwordGroup']
for (let group of groups) {
$(group).removeClass(error_class_name)
};
var element = document.getElementById('first_name');
var html = element.outerHTML;
var data = { html: html };
var json = JSON.stringify(data);
if (data.responseJSON.element) {
help_block("#fistNameGroup", data.responseJSON.element)
}
var melement = document.getElementById('last_name');
var html = melement.outerHTML;
var data = { html: html };
var json = JSON.stringify(data);
if (data.responseJSON.melement) {
help_block("#lastNameGroup", data.responseJSON.melement)
}
var nelement = document.getElementById('username');
var html = nelement.outerHTML;
var data = { html: html };
var json = JSON.stringify(data);
if (data.responseJSON.nelement) {
help_block("#usernameGroup", data.responseJSON.nelement)
}
var zelement = document.getElementById('email');
var html = zelement.outerHTML;
var data = { html: html };
var json = JSON.stringify(data);
if (data.responseJSON.zelement) {
help_block("#email", data.responseJSON.zelement)
}
var lelement = document.getElementById('password');
var html = lelement.outerHTML;
var data = { html: html };
var json = JSON.stringify(data);
if (data.responseJSON.lelement) {
help_block("#password", data.responseJSON.lelement)
}
}
function help_block(group, variable) {
$(group).addClass(error_class_name);
$(group).append('<div class="help-block">' + variable + "</div>");
}
Форма в html
<form id="signUpForm" action="{% url 'registration_App:api_sign_up' %}"
role="form" method="post" class="form" data-href="{% url
'registration_App:verify_email_sent' %}"
>
{% csrf_token %}
<div class="row" data-visible="desktop">
<div class="col-md-6">
<div class="signup__section" id="firstNameGroup">
<input type="text" name="first_name" value=""
class="form-control input-lg" placeholder="First Name"
required />
</div>
</div>
<div class="col-md-6">
<div class="signup__section" id="lastNameGroup">
<input type="text" name="last_name" value="" class="form-
control input-lg" placeholder="Last Name"
required />
</div>
</div>
</div>
<div class="signup__section" id="usernameGroup">
<input type="text" name="username" value="" class="form-control
input-lg" placeholder="User Name"
required />
</div>
<div class="signup__section" id="emailGroup">
<input type="text" name="email" value="" class="form-control
input-lg" placeholder="Email"
required />
</div>
<div class="signup__section" id="passwordGroup">
<div class="message-input">
<input type="password" name="password" value="" class="form-
control input-lg"
placeholder="Password" required />
<span class="message-input__strong">strong</span>
</div>
</div>
<div class="signup__checkbox">
<div class="row">
<div class="col-md-6">
<label class="signup__box">
<label class="custom-checkbox">
<input type="checkbox" checked="checked">
<i></i>
</label>
<span>I agree to the Terms & Conditions.</span>
</label>
</div>
<div class="col-md-6" data-visible="desktop">
<label class="signup__box">
<label class="custom-checkbox">
<input type="checkbox">
<i></i>
</label>
<span>Subscribe to newsletter</span>
</label>
</div>
</div>
</div>
<button class="signup__btn-create btn btn--type-02"
type="submit">Create New Account</button>
</form>