慕课网-Django入门到进阶-更适合Python小白的系统课程-第5章Django中的Form表单的使用-5-1表单的介绍和一个简单表单的使用方法
第5章 Django 中的 Form 表单的使用
5-1 表单的介绍和一个简单表单的使用方法
什么是表单
1.表单可以和我们日常的填表联想起来,通过集合信息交付给指定的人或位置
2.从 Web 的角度来说,通过前端的表单模块填写后端服务需要的信息,填写完毕后,提交给后端服务的一个工具
3.表单一般分为四个部分:提交地址、提交方法、表单组件、提交按钮
<form action="/" method="get"> <input type="text" /> <input type="submit" value="提交" /> </form>
Form 表单标签 用于定义一个表格 attr: action method
Input 输出标签 用来填写信息
Select - options 选择标签 如名,可以在多个选项中进行选择
input 标记所包含的元素类型
| type值 | 说明 |
| text | 文本字段 |
| password | 密码域,用户在输入时不显示具体内容,以*代替 |
| radio | 单选按钮 |
| checkbox | 复选框 |
| button | 普通按钮 |
| submit | 提交按钮 |
| reset | 重置按钮 |
| hidden | 隐藏域 |
| file | 文件域 |
前端学习资料推荐
http://www.w3school.com.cn/tags/html_ref_byfunc.asp
请将以上地址中的 html、css、javascript 多看几遍,甚至,多抄几遍,这个笔记本将可能会跟随你技术职业的一生
本课程不会对前端知识做系统讲解,但会在使用到每一个知识点的时候,为大家进行介绍,以便大家快速上手
Django 的表单能做什么
1.模拟生成前端 html 语言,无需手动书写表单
2.对前端提交的表单信息进行验证
建议自己手动去书写前端 html 语言,因为那样会更好控制,如 css 样式等
实例
1.在命令行窗口新建项目
django-admin startproject form cd form python manage.py startapp app
2.在项目 form 中目录 form,修改文件 settings.py
# 添加应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
]
# 添加模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3.在项目 form 下新建目录 templates
4.在项目 form 下目录 app,添加文件 urls.py,添加应用路由
urlpatterns = [
]
5.在项目 form 下目录 form,修改文件 urls.py
from django.contrib import admin
from django.urls import path, include
from app import urls as app_urls
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(app_urls)),
]
6.在项目 form 下目录 app,修改文件 views.py
from django.shortcuts import render
from django.views.generic import View
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
return render(request, self.TEMPLATE)
def post(self, request):
pass
7.在项目 form 下目录 app,添加文件 urls.py
from django.urls import path
from .views import Regist
urlpatterns = [
path('regist', Regist.as_view(), name='regist'),
]
8.在项目 form 下目录 templates,添加文件 regist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regist</title>
</head>
<body>
<form action="" method="">
<input type="text" placeholder="用户名" />
<input type="password" placeholder="密码" />
<input type="submit" value="提交" />
</form>
</body>
</html>
9.在项目 form 下命令行窗口启动服务
python manage.py runserver 127.0.0.1:8000
10.测试看效果

11.在项目 form 下目录 templates,修改文件 regist.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regist</title>
</head>
<body>
<form action="{% url 'regist' %}" method="post">
<label>用户名</label><input type="text" name="username" placeholder="用户名" /><br/>
<label>密码</label><input type="password" name="password" placeholder="密码" /><br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
12.在项目 form 下目录 app,修改文件 views.py
from django.shortcuts import render, redirect
from django.views.generic import View
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
return render(request, self.TEMPLATE)
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
print('username:', username)
print('password', password)
return redirect('/regist')
13.测试,提示错误

14.在项目 form 下目录 templates,修改文件 regist.html,添加 csrf_token
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regist</title>
</head>
<body>
<form action="{% url 'regist' %}" method="post">
{% csrf_token %}
<label>用户名</label><input type="text" name="username" placeholder="用户名" /><br/>
<label>密码</label><input type="password" name="password" placeholder="密码" /><br/>
<input type="submit" value="提交" />
</form>
</body>
</html>
15.再次测试,成功了

16.在项目 form 下目录 app,添加文件 forms.py
from django import forms
from django.forms import fields
class Auth(forms.Form):
username = fields.CharField(max_length=18, required=True)
password = fields.CharField(widget=forms.PasswordInput)
17.在项目 form 下目录 app,修改文件 views.py
from django.shortcuts import render, redirect
from django.views.generic import View
from .forms import Auth
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
form = Auth()
return render(request, self.TEMPLATE, {'form': form})
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
print('username:', username)
print('password', password)
return redirect('/regist')
18.在项目 form 下目录 templates,修改文件 regist.html,调用 form
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regist</title>
</head>
<body>
<form action="{% url 'regist' %}" method="post">
{% csrf_token %}
{{form.as_table}}
<!-- <label>用户名</label><input type="text" name="username" placeholder="用户名" /><br/>-->
<!-- <label>密码</label><input type="password" name="password" placeholder="密码" /><br/>-->
<input type="submit" value="提交" />
</form>
</body>
</html>
19.测试

20.在项目 form 下目录 app,修改文件 views.py,调用 form
from django.shortcuts import render, redirect
from django.views.generic import View
from .forms import Auth
class Regist(View):
TEMPLATE = 'regist.html'
def get(self, request):
form = Auth()
return render(request, self.TEMPLATE, {'form': form})
def post(self, request):
# username = request.POST.get('username')
# password = request.POST.get('password')
form = Auth(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
print('username:', username)
print('password', password)
return redirect('/regist')
posted on 2020-02-05 09:01 herisson_pan 阅读(7) 评论(0) 收藏 举报
浙公网安备 33010602011771号