美文网首页
Flask ---- 入门级教程 之 代码练习

Flask ---- 入门级教程 之 代码练习

作者: 幼姿沫 | 来源:发表于2020-09-05 17:37 被阅读0次

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>

相关文章

网友评论

      本文标题:Flask ---- 入门级教程 之 代码练习

      本文链接:https://www.haomeiwen.com/subject/jdefektx.html