小结复习
(1)-(4)感觉迷迷糊糊的,这里小结一下分别都讲了啥:
(1)一些基础的概念;
(2)IP等概念+基础的实现
(3)http状态码+路由变量规则+视图函数return+部分响应
(4)request+response+模板渲染
小结测试
实现一个add功能
app=Flask(__name__)
app.config.from_object(config)
#是可以传多个数的
@app.route('/add/<int:a1>/<int:a2>')
def add(a1,a2):
if a1>0 and a2>0:
return '加法运算结果为:'+str(a1+a2)
return "请输入两个正数"
#请注意啦视图函数必须有返回值,当涉及到分类时一定要注意
app.run(port=8888)
小结补充
get请求会在路径上体现出来,即会暴露隐私,所以再来一个小结测试
小结测试2
完善(4)中的代码,使其支持post请求方法
users=[]
#如果成功加入哈哈星球就把它记下来
app=Flask(__name__)
app.config.from_object(config)
@app.route('/add/<int:a1>/<int:a2>')
def add(a1,a2):
if a1>0 and a2>0:
return '加法运算结果为:'+str(a1+a2)
return "请输入两个正数"
#请注意啦视图函数必须有返回值,当涉及到分类时一定要注意
@app.rout('/register',methods=['GET','POST'])
def register():
if request.method=='POST':
username=request.form.get('username')
address=request.form.get('address')
user={'username'=username,'password'=password}
users.append(user)
return "加入成功!"
return render_template('regis.html')
@app.route('/showusers')
def show():
j=json.dumps(users)
return j
app.run(port=8888)
<form action="/register" method="post">
<p><input type="text" name="username" placeholder="请输入用户名"></p>
<p><input type="text" name="address" placeholder="请输入地址"></p>
<p><input type="submit" value="提交"></p>
</form>
实例代码和(4)中有点不一样,区别在于regis.html中的action仍调用register。
*按顺序来说,假如我们先输入链接访问…/register,这个时候我们是GET的请求方式;
*当点击提交后,根据action再次request…/register,但是需要注意regis.html中的action规定了是POST请求方式,这个时候就可以通过form将用户信息存储起来。
*综合的逻辑就是,当是GET时,就是简单的初次访问页面;当是POST时,就说明用户提交了,就要做存储等其他操作了,或者返回一个“加入成功”。
网页改进
在这里添加一个showusers的功能:
@app.route('/showusers')
def show():
j=json.dumps(users)
return j
可以观察到,我们需要每次输入特定的url才能去实现,其实,可以在首页整合展示所有功能,然后以类似超链接的方式直接点击跳转
@app.route('/')
def index():
return render_template('index.html')
index文件
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
#这就是超链接的实现
<h1>欢迎来到哈哈星球<h1>
<a href="/register">注册</a><br>
<a href="">登录</a><br>
<a href="/showusers">展示</a><br>
</body>
</html>