跳到主要内容

Django 表单使用-数据校验与属性方法

本小节会介绍 Django 中 Form 对象的相关属性与方法,并结合实战让大家能彻底掌握表单的用法。

1. 关于表单的两个基本实验

表单我们在前面介绍 HTML 基础的时候介绍过。下面是之前完成的一个简单的表单示例,模仿普通网站的登录表单:

(django-manual) [root@server first_django_app]# cat templates/test_form1.html
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}" />
{% if not success %}
<form action="/hello/test_form_view1/" method="POST">
{% csrf_token %}
<div><span>账号:</span><input class="input-text" type="text" placeholder="请输入登录手机号/邮箱" name="name" required/></div>
<div><span>密码:</span><input class="input-text" type="password" placeholder="请输入密码" name="password" required/></div>
<div>
<label style="font-size: 10px; color: grey">
<input type="checkbox" checked="checked" name="save_login"/>7天自动登录
</label>
</div>
<div><input class="input-text input-red" type="submit" value="登录" style="width: 214px"/></div>
{% if err_msg %}
<div><label class="color-red">{{ err_msg }}</label</div>
{% endif %}
</form>
{% else %}
<p>登录成功</p>
{% endif %}

准备好视图函数:

class TestFormView1(TemplateView):
template_name = 'test\_form1.html'
# template\_name = 'register.html'

def get(self, requests, \*args, \*\*kwargs):
return self.render_to_response(context={'success': False})

def post(self, requests, \*args, \*\*kwargs):
success = True
err_msg = ""
name = requests.POST.get('name')
password = requests.POST.get('password')
if name != 'spyinx' or password != '123456':
success = False
err_msg = "用户名密码不正确"
return self.render_to_response(context={'success': success, 'err\_msg': err_msg})

最后编写 URLConf,要和表单中的 action 属性值保持一致:

urlpatterns = [
# ...

# 表单测试
path('test\_form\_view1/', views.TestFormView1.as_view(), name='test\_form\_view1'),
]

接下来启动服务然后放对应的登录页面。操作如下: