app.py
#从flask模块中导入Flask类from flaskimport Flask, render_template, request, jsonify, redirect, url_for, abort
#导入转换器基础类 在路由中解析模块
from werkzeug.routingimport BaseConverter
#将Flask类进行实例化
app=Flask(__name__)
#配置文件信息
class Config(object):
DEBUG=True
app.config.from_object(Config)
#装饰器路径
@app.route('/')
def index():
return render_template('index.html')
#跳转登陆页面
@app.route('/login',methods=['GET','POST'])
def login():
if request.method=='GET':
return render_template('login.html')
else:
uname=request.form['uname']
pwd=request.form['pwd']
if uname=='幼姿沫' and pwd=='123456':
msg='登陆成功'
return render_template('goods.html',uname=uname,msg=msg)
else:
msg='登陆失败,请重试新输入'
return render_template('login.html',msg=msg)
#字典格式的转换
@app.route('/to_dict',methods=['GET','POST'])
def to_dict():
if request.method=="GET":
return render_template('register.html')
else:
name=request.form['uname']
age=request.form['age']
gender=request.form['gender']
print('用户名 * %s 用户年龄 * %s 用户性别 * %s' % (name,age,gender))
login_dict={
"name":"易烊千玺",
"age":"20",
"gender":"男"
}
#jsonify将字典格式转化为了字符串形式
for i,jin login_dict.items():
print(jsonify(login_dict),i,j)
return jsonify(login_dict)
#路由反转
@app.route('/to_redirect')
def to_redirect():
#return redirect('http://ww.baidu.com')
return redirect(url_for('to_dict'))
@app.errorhandler(404)
def page_error(e):
print(e)
return render_template('404.html')
@app.errorhandler(500)
def page_not_found(e):
print(e)
return render_template('500.html')
@app.route('/usershow')
def user_show():
return render_template('user_info.html')
#根据id来查找相关数据信息,int类型规定数据类型
@app.route('/userinfo/<int:id>')
def user_info(id):
print('id*',id)
return '该用户信息为 * %s ' %id
#向路由中传递参数 字符串类型
@app.route("/user_name/<string:uname>")
def user_name(uname):
print('name*',uname)
return '该用户姓名为 * %s' %uname
#实现路由的万能转换器 自定义转换器继承转换器的基础类
class MyReConverter(BaseConverter):
#路由转换器的字典 自己的正则规律名字任意
def __init__(self,url_map,regex):
super(MyReConverter, self).__init__(url_map)
self.regex=regex
#自己写的转换器加入到默认的转换器列表中
app.url_map.converters['re']=MyReConverter
@app.route('/checkscore/<re("\d{3}"):num>')
def check_score(num):
print('%s' %num)
return '您的成绩为%s' %num
@app.route('/checkphone/<re("1[345678]\d{9}"):phone>')
def checkphone(phone):
print('手机号码为 * ',phone)
return '手机号码为 * %s' %phone
#运行函数
if __name__ =='__main__':
app.run()
404.html
500.html
goods.html
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>商品列表页面
<h1>{{msg}}
<h1>欢迎<span style="color:red;">{{uname}}</span>登录本页面,开始您的购物之旅吧
</html>
index.html
<!DOCTYPE html><html lang="en">
<meta charset="UTF-8">
<title>首页运行
<link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js">
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation
<span class="icon-bar">
<span class="icon-bar">
<span class="icon-bar">
<a class="navbar-brand" href="#">Brand
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Link<span class="sr-only">(current)
<li><a href="#">Link
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown<span class="caret">
<ul class="dropdown-menu">
<li><a href="#">Action
<li><a href="#">Another action
<li><a href="#">Something else here
<li role="separator" class="divider">
<li><a href="#">Separated link
<li role="separator" class="divider">
<li><a href="#">One more separated link
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
<button type="submit" class="btn btn-default">Submit
<ul class="nav navbar-nav navbar-right">
<li><a href="/to_dict">register
<li class="dropdown">
<a href="/login" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">login<span class="caret">
<ul class="dropdown-menu">
<li><a href="#">Action
<li><a href="#">Another action
<li><a href="#">Something else here
<li role="separator" class="divider">
<li><a href="#">Separated link
</div>
</div>
</html>
login.html
<!DOCTYPE html><html lang="en">
<meta charset="UTF-8">
<title>登录页面
<form action="/login" method="post">
<p>username*<input type="text" name="uname">
<p>password*<input type="password" name="pwd">
<p><input type="submit" value="submit">
<span style="color:cyan;">{{msg}}
</html>
register.html
控制台输出结果展示
<!DOCTYPE html><html lang="en">
<meta charset="UTF-8">
<title>注册页面
<form action="/to_dict" method="post">
<p>name*<input type="text" name="uname">
<p>age*<input type="number" name="age">
<p>gender*<select name="gender">
<option name="gender">男
<option name="gender">女
<p><input type="submit" value="submit">
{{login_dict}}
</html>
user_info.html
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>用户信息资料展示
<h1>用户资料展示
<li>id*1 name*hh gender*f age*20<a href="/userinfo/1">详情
<li>id*2 name*uu gender*m age*20<a href="/userinfo/2">详情
<li>id*3 name*aa gender*m age*21<a href="/userinfo/3">详情
<li>id*4 name*nn gender*m age*22<a href="/user_name/宁宁">详情
<li>id*5 name*gg gender*f age*25<a href="/user_name/高钙">详情
</html>
网友评论