如果django中的条件为True,如何创建消息



我正在开发身份验证Web应用程序,如果用户输入与某些条件不匹配,我想显示消息。它应该看起来像这样。

例如:如果密码长度小于8个字符,则显示消息"密码应长于8个字符!">

我的观点:

def signup(request):
if request.method == "POST":
context = {'has_error': False,
'data': request.POST,
'length_error': False,
'password_match_error': False,
'validate_email_error': False,
}
global password
global password2
global email
global username
email = request.POST.get('email')
username = request.POST.get('username')
password = request.POST.get('password')
password2 = request.POST.get('password2')
if len(password) < 8:
############custom message
context['length_error'] = True
if password != password2:
############custom message
context['password_match_error'] = True
if not validate_email(email):
############custom message
context['validate_email_error'] = True
if not username:
############custom message
context['has_error'] = True
if models.CustomUser.objects.filter(email=email).exists():
messages.add_message(request, messages.ERROR, 'This email is already registered!')
context['has_error'] = True
return render(request, 'authentication/signup.html', context, status=409)
if context['has_error']:
return render(request, 'authentication/signup.html', context)
body = render_to_string('authentication/email/email_body.html', {
'username': username,
'token': token,
})
send_mail(
"Email Confirmation",
body,
'tadejtilinger@gmail.com',
[email]
)
return redirect('email-confirmation')
return render(request, 'authentication/signup.html')

我的注册.html

{% include  "_base.html" %}
{% load static %}
{% block title %}Sign Up{% endblock title %}
{% block content %}
<link rel="stylesheet" href="{% static 'css/authentication/signup.css' %}">
<div class="container">
<form class="signup_form" method="post" action="{% url 'signup' %}">
{% csrf_token %}
<input type="text" placeholder="Email" class="input_1" name="email" value="{{ data.email }}">
<input type="text" placeholder="Username" class="input_2" name="username" value="{{ data.username }}">
<input type="text" placeholder="Password" class="input_3" name="password" value="{{ data.password }}">
<input type="text" placeholder="Confirm password" class="input_4" name="password2" value="{{ data.password2 }}">
<button type="submit" class="submit_btn1">Sign Up</button>
</form>
</div>
{% block scripts %}
<script src="js/signup.js"></script>
{% endblock scripts %}
{% endblock content %}

我的注册.js为空。如果你想让我发布任何其他内容,请发表评论。

您将这些错误变量传递到上下文中,以便在模板中呈现它们,您可以执行以下操作:

{% if length_error %}
<p>Your password must be longer than 8 characters</p>
{% endif %}

但对于你所有不同的错误。Django内置了一个登录表单,可以验证这种事情,我建议使用它,而不是重新发明轮子。

https://docs.djangoproject.com/en/4.0/topics/auth/default/

最新更新