django学习入门系列之第二点《案例2:用户注册改进》
文章目录
- 更改提交数据类型
- 提交数据/返回数据到后台
- 界面接收数据
- 总结
- 往期回顾
更改提交数据类型
#methods - 提交方式
#methods = ['提交的数据类型']
#GET - 直接提交
#POST - 藏起来提交
@app.route('/register',methods = ['GET'])
提交数据/返回数据到后台
#<from method = "get" action = "提交地址">
<from>
需要返回的内容
</from>
<form method="get" action="xx/xx/xx">
# 注意input的一定要有name,不然发不出去
用户名: <input type="text" name="uu">
用户密码: <input type="password" name="pp">
<input type="button" value="提交" >
<input type="submit" value="提交" >
</form>
传回来的数据 [404 Not Found](http://127.0.0.1:5000/xx/xx/xx?uu=123&pp=2345)
页面上的数据,想要提交到后台:
form标签包裹要提交的数据标签
- 提交方式:
method="get"
- 提交的地址:
action="/xx/xxx/xx"
- 在form标签里面必须有一个submit标签
- 提交方式:
在form里面的一些标签:input/select/textarea
界面接收数据
首先确定form中返回的网址
<form method="get" action="xx/xx/xx">
这里返回的网址是xx/xx/xx
在主界面新建一个网站,网站地址为form中需要返回的地址
@app.route('/xx/xx/xx') def xxxx(): return "注册成功"
当用户点击提交的时候会移动到这个网址,同时返回一个注册成功的的界面
同时需要接收用户返回的值
#request 用来接收表单中返回的GET数据 from flask import Flask, render_template, request @app.route('/xx/xx/xx',methods = ['get']) def xxxx(): print(request.args) return "注册成功" #返回打印出来的值 #ImmutableMultiDict([('uu', '123324'), ('pp', '345345')])
如果是post请求的话
<form method="post" action="xx/xx/x">
#app中的methods要改成POST,注意是大写
#打印出来的是request.form,和GET打印的不一样
@app.route('/xx/xx/x',methods = ['POST'])
def xxxx():
print(request.form)
return "注册成功"
- 综合案例1
将案例1的标签返回
注:能返回的只有用户可以输入的标签
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/register',methods = ['GET'])
def index():
return render_template('register.html')
@app.route('/xx/xx/x',methods = ['POST'])
def xxxx():
print(request.form)
return "注册成功"
if __name__ == '__main__':
app.run()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登记</title>
</head>
<body>
<form method="post" action="xx/xx/x">
<div>用户名: <input type="text" name="uu"></div>
<div>用户密码: <input type="password" name="pp"></div>
<div>
性别:
<input type="radio" name="n1" value="男">男
<input type="radio" name="n1" value="女">女
</div>
<div>
爱好:
<input type="checkbox" name="hobby" value="篮球">篮球
<input type="checkbox" name="hobby" value="足球">足球
<input type="checkbox" name="hobby" value="羽球">羽球
<input type="checkbox" name="hobby" value="铅球">铅球
</div>
<div>
城市:
<select name="city">
<option value="北京">北京</option>
<option value="上海">上海</option>
<option value="广州">广州</option>
<option value="深圳">深圳</option>
</select>
</div>
<div>
<select name = "skill" multiple>
<option value="吃饭">吃饭</option>
<option value="睡觉">睡觉</option>
<option value="打豆豆">打豆豆</option>
<option value="玩游戏">玩游戏</option>
</select>
</div>
<div>
<textarea name="more"></textarea>
</div>
<input type="submit" value="提交" >
</form>
</body>
</html>
- 如果是单独接收数据
#POST格式
#接收单个名字中的单个数据用request.form.get
#接收单个名字中的多个数据用request.form.getlist
@app.route('/xx/xx/x', methods=['POST'])
def xxxx():
print(request.form)
# 单独接收数据
uu = request.form.get("uu")
pp = request.form.get("pp")
n1 = request.form.get("n1")
hobby = request.form.getlist("hobby")
city = request.form.get("city")
skill = request.form.get("skill")
more = request.form.get("more")
print(uu, pp, n1, hobby, city, skill, more)
return "注册成功"
所返回的信息
ImmutableMultiDict([('uu', '123'), ('pp', 'qwe'), ('n1', '男'), ('hobby', '篮球'), ('hobby', '足球'), ('city', '广州'), ('skill', '吃饭'), ('skill', '睡觉'), ('skill', '打豆豆'), ('more', 'text')])
123 qwe 男 ['篮球', '足球'] 广州 吃饭 text
综合案例1改
将两个函数整合到一起(相似的时候一般要整合在一起,逻辑不同的不建议整合在一起)
from flask import Flask, render_template, request
app = Flask(__name__)
# 这样既可以判断是GET还是POST
@app.route('/register', methods=['GET', 'POST'])
def index():
# 如果发送的是GET则返回xx数据
if request.method == "GET" :
return render_template('register.html')
else:
print(request.form)
# 单独接收数据
uu = request.form.get("uu")
pp = request.form.get("pp")
n1 = request.form.get("n1")
hobby = request.form.getlist("hobby")
city = request.form.get("city")
skill = request.form.get("skill")
more = request.form.get("more")
print(uu, pp, n1, hobby, city, skill, more)
return "注册成功"
if __name__ == '__main__':
app.run()
<form method="post" action="/register">
总结
称呼
- 浏览器能够识别的标签 (非专业说法) - HTML标签 什么是HTML?超文本传输语音(与浏览器搭配)
HTML标签(默认格式样式、以后通过手段可以修改)
HTML标签与编程语言无关
- java + HTML
- c# + HTML
- php + HTML
- python + HTML
提醒:HTML标签比较多,不必逐一学会
往期回顾
1.【快速开发网站】
2.【浏览器能识别的标签1】
3.【浏览器能识别的标签2】
4.【浏览器能识别的标签3】
5.【浏览器能识别的标签4】
6.【案例1:用户注册】