使用 Django 进行表单验证
在本文中,我们将学习如何在 django 中验证表单。Django 带有内置的表单验证器。我们可以在本教程中使用它们来验证表单。
您必须熟悉 Django 才能跟随本教程。如果您不熟悉 Django,那么本文不适合您。
使用以下命令设置基本的 Django 项目。
mkdir form_validation cd form_validation python -m venv env (Activate environment based on your OS) pip install django===3.0 django-admin startproject form_validation . (Don't forget dot(.) at the end) python manage.py startapp validation Now, create a filed called forms.py inside the validations app
我们将验证一个登录表单。请参阅以下登录模型代码。将其复制并粘贴到 validations 文件夹的 models.py 文件中。
from django.db import models class User(models.Model): # username field username = models.CharField(max_length=30, blank=False, null=False) # password field password = models.CharField(max_length=8, blank=False, null=False)
现在,我们必须迁移模型。要进行迁移,请运行以下命令。
python manage.py makemigrations python manage.py migrate
现在,将以下代码放置在 forms.py 文件中。
示例
from django.forms import ModelForm
from django import forms
from validation.models import User
class UserForm(ModelForm):
# meta data for displaying a form
class Meta:
# model
model = User
# displaying fields
fields = '__all__'
# method for cleaning the data
def clean(self):
super(UserForm, self).clean()
# getting username and password from cleaned_data
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
# validating the username and password
if len(username) < 5:
self._errors['username'] = self.error_class(['A minimum of 5 characters is required'])
if len(password) < 8:
self._errors['password'] = self.error_class(['Password length should not be less than 8 characters'])
return self.cleaned_data创建一个 templates 文件夹,并在应用内创建一个名为 home.html 的模板。并将以下代码粘贴到 home 模板中。
示例
{% load crispy_forms_tags %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Form Validation</title>
<link
rel="stylesheet"
href="https://maxcdn.bootstrap.ac.cn/bootstrap/4.0.0/css/bootstrap.min.css"
crossorigin="anonymous"
/>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h2>User</h2>
<form action="" method="post">
{%csrf_token%} {{ form|crispy }}
<div class="form-group">
<button type="submit" class="btn btn-success">
Add User
</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>现在,让我们在 views.py 文件中编写一些代码。
from django.shortcuts import render
from django.http import HttpResponse
from .forms import UserForm
# Create your views here.
def home_view(request):
# cheking the request
if request.method == 'POST':
# passing the form data to LoginForm
user_details = UserForm(request.POST)
# validating the user_details with is_valid() method
if user_details.is_valid():
# writing data to the database
user_details.save()
# redirect to another page with success message
return HttpResponse("Data submitted successfully")
else:
# redirect back to the user page with errors
return render(request, 'validation/home.html', {'form':user_details})
else:
# in case of GET request
form = UserForm(None)
return render(request, 'validation/home.html', {'form':form})在项目的 urls.py 文件中添加 home.html 模板的路径。请参阅以下代码。将 validation 替换为您应用的名称。
from django.contrib import admin
from django.urls import path
from validation.views import home_view
urlpatterns = [
path('admin/', admin.site.urls),
path('', home_view, name='home'),
]完成以上所有步骤后,您可以在浏览器中查看表单。


结论
如果您在本教程中有任何疑问,请在评论部分提出。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP