为什么我没有得到任何关于我的表格填写正确还是错误的反馈?Python,Django



我在Django中使用Python,下面是我的视图.py

def register(request):
if request.method == "POST":
form = NewUserForm(request.POST)
if form.is_valid():
user = form.save()
auth_login(request, user)
print("success")
return render(request, 'Upload.html', {})
# messages.success(request, "Regisration successful.")
# print("hello")
return render(request, "Home.html")
else:
print(form.errors)
return render(request, 'Register.html', {'form': form})
form = NewUserForm()
return render(request, 'Register.html', context={"form":form})

这是我的HTML

{% extends 'base.html' %}
{% load static %}
{% block css %} 
<link rel="stylesheet" href=" {% static 'website/Register.css' %} " media="screen">
{% endblock %}

{% block content %} 
<section class="u-align-center u-clearfix u-section-1" id="sec-6951">
<div class="u-clearfix u-sheet u-sheet-1">
<div class="u-align-center u-form u-form-1">
<form action="#" method="POST" class="u-clearfix u-form-spacing-10 u-form-vertical u-inner-form" source="custom" name="form" style="padding: 10px;">
{% csrf_token %}

<div class="u-form-email u-form-group">
<label for="email-87f0" class="u-label">Email</label>
<input type="email" placeholder="Enter a valid email address" id="email-87f0" name="email" class="u-border-1 u-border-grey-30 u-input u-input-rectangle u-white" required="">
</div>
<div class="u-form-group u-form-name">
<label for="name-87f0" class="u-label">Username</label>
<input type="text" placeholder="Create a username" id="name-87f0" 
name="username" class="u-border-1 u-border-grey-30 u-input u-input-rectangle u-white" required="">
</div>
<div class="u-form-group u-form-name u-form-group-3">
<label for="name-12e6" class="u-label">Password</label>
<input type="text" placeholder="Create a password" id="name-12e6" name="password1" class="u-border-1 u-border-grey-30 u-input u-input-rectangle u-white" required="">
</div>
<div class="u-form-group u-form-name u-form-group-4">
<label for="name-12e6" class="u-label">Verify Password</label>
<input type="text" placeholder="Verify your password" id="name-12e6" name="password2" class="u-border-1 u-border-grey-30 u-input u-input-rectangle u-white" required="">
</div>
<div class="u-align-center u-form-group u-form-submit">
<a href="#" class="u-btn u-btn-submit u-button-style">Create Account</a>
<input type="submit" value="submit" class="u-form-control-hidden">
</div>

<ul class="messages">
{{ messagez }} </li>
{{ form.errors }}

</form>
</div>
</div>
</section>
{% endblock %}}

messagez和form.errors是在HTML上获取代码的一种尝试。我不知道如何让代码出现在HTML上。我想让它说";成功;或显示表格.error

考虑使用alert向您想要的模板显示错误消息。

也许模板中的这段代码可以工作。

{% if messages %}
{% for message in messages %}
<div class="alert alert-{{ message.tags }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}

有关更多详细信息,请参阅文档https://docs.djangoproject.com/en/4.0/ref/contrib/messages/

与将表单视图实现为基于函数的视图相比,使用FormView会有更好、更正确的时间。

class RegisterView(FormView):
form_class = NewUserForm
template_name = "Register.html"
def form_valid(self, form):
user = form.save()
auth_login(self.request, user)
return redirect("/")  # assuming that's the Home to redirect to

您还可以更好地让Django布置表单——它还可以处理打印错误、初始值、占位符等:

<form method="POST">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="submit">
</form>

默认的表格布局可能与您想要的不一样——django-crispy-forms是一个常用的选项。

我找到了答案。我只是让内置的Django框架接管并删除了我的HTML。这太难运行我自己的东西,我用脆代替。

最新更新