美文网首页
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