第七周——数据分析、可视化 Day2 8.9

学习时间:9:00——11:00        15:00——17:20

Flask入门

Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。Flask没有默认使用的数据库,可以选择MySQL,也可以用NoSQL。其WSGI工具箱采用Werkzeug(路由模块),模板引擎则使用Jinja2。

可以说Flask框架的核心就是Werkzeug和Jinja2。

Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。

Flask比较小,可以帮助更好地入门,但也有弊端就是功能不全,有需求得自行安装扩展包

Flask扩展包:

  1. Flask-SQLalchemy:操作数据库;
  2. Flask-migrate:管理迁移数据库;
  3. Flask-Mail:邮件;
  4. Flask-WTF:表单;
  5. Flask-script:插入脚本;
  6. Flask-Login:认证用户状态;
  7. Flask-RESTful:开发REST API的工具;
  8. Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  9. Flask-Moment:本地化日期和时间;

初始代码如下:

from flask import Flask

app = Flask(__name__)


#路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/')
def hello_world():  # put application's code here
    return 'hello!'


if __name__ == '__main__':
    app.run(debug=True)            #debug默认关闭,开启后可以实时更新网站内容

pycharm社区版貌似直接在app.run()内添加debug = True即可开启debug,专业版需要点击附近的倒三角找到编辑配置,并打√才能开启

 通过访问路径,获取用户的参数:

from flask import Flask

app = Flask(__name__)


#路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/user/<name>')                                 
def hello_world(name):  # put application's code here
    return 'hello!'+f"{name}"                         


if __name__ == '__main__':
    app.run(debug=True)

 路由路径不能重复,用户通过唯一路径访问特定函数

from flask import Flask,render_template      #导入render_template渲染网页
import datetime 

app = Flask(__name__)


#路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/')
def hello_world():  # put application's code here
    time = datetime.date.today()
    return render_template("index.html", var = time)       #传递的一般变量用var


if __name__ == '__main__':
    app.run(debug=True)

 导入render_template后在templates文件中新建html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    今天是{{ var }},hello!         #注意一般变量用双层大括号括起来!!!
</body>
</html>
from flask import Flask,render_template
import datetime

app = Flask(__name__)


#路由解析,通过用户访问的路径,匹配相应的函数
@app.route('/')
def hello_world():  # put application's code here
    time = datetime.date.today()
    name = ['fancy','Mike','John']
    return render_template("index.html", var = time,name_list = name)


if __name__ == '__main__':
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    今天是{{ var }},hello!<br/>         #<br/>为换行
    今天的卷王是:<br/>
    {% for data in name_list %}         #控制语句用{% %}括起来!!!!
        {{ data }}                      #一般变量仍用{{ }}括起来
    {% endfor %}                        #for循环要加上结束语句
</body>
</html>

豆瓣top250首页制作

from flask import Flask,render_template


app = Flask(__name__)

@app.route('/')
def index():
    return render_template("index.html")

@app.route('/index')
def home():
    # return render_template("index.html")
    return index()

@app.route('/movie')
def movie():
    return render_template("movie.html")

@app.route('/score')
def score():
    return render_template("score.html")

@app.route('/word')
def word():
    return render_template("word.html")

@app.route('/team')
def team():
    return render_template("team.html")


if __name__ == '__main__':
    app.run()
  <!-- ======= Header ======= -->
  <header id="header">
    <div class="container">

      <div class="logo float-left">
        <h1 class="text-light"><a href="/index"><span>Mamba</span></a></h1>
        <!-- Uncomment below if you prefer to use an image logo -->
        <!-- <a href="index.html"><img src="static/assets/img/logo.png" alt="" class="img-fluid"></a>-->
      </div>

      <nav class="nav-menu float-right d-none d-lg-block">
        <ul>
          <li class="active"><a href="/index">首页<i class="la la-angle-down"></i></a></li>
          <li><a href="/movie">电影</a></li>
          <li><a href="/score">评分</a></li>
          <li><a href="/word">词云</a></li>
          <li><a href="/team">团队</a></li>
        </ul>
      </nav><!-- .nav-menu -->

    </div>
  </header><!-- End Header -->

  <!-- ======= Top Section ======= -->
  <section id="team" class="team">
      <div class="container">
        <div class="section-title">
          <h2>豆瓣电影Top250数据分析</h2>
          <p>应用python爬虫、Flask框架、Echarts、WordCloud等技术实现</p>
        </div>
      </div>

  <!-- ======= Counts Section ======= -->
  <section class="counts section-bg">
      <div class="container">

        <div class="row">

          <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up">
            <a href="/movie">
              <div class="count-box">
              <i class="icofont-simple-smile" style="color: #20b38e;"></i>
              <span data-toggle="counter-up">250</span>
              <p>经典电影</p>
            </div>
          </a>
          </div>

          <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="200">
            <a href="/score">
              <div class="count-box">
              <i class="icofont-document-folder" style="color: #c042ff;"></i>
              <span data-toggle="counter-up">1</span>
              <p>评分统计</p>
            </div>
          </a>
          </div>

          <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="400">
            <a href="/word">
              <div class="count-box">
              <i class="icofont-live-support" style="color: #46d1ff;"></i>
              <span data-toggle="counter-up">5693</span>
              <p>词汇统计</p>
            </div>
          </a>
          </div>

          <div class="col-lg-3 col-md-6 text-center" data-aos="fade-up" data-aos-delay="600">
            <a href="/team">
              <div class="count-box">
              <i class="icofont-users-alt-5" style="color: #ffb459;"></i>
              <span data-toggle="counter-up">1</span>
              <p>团队成员</p>
            </div>
          </a>
          </div>

        </div>

      </div>
    </section><!-- End Counts Section -->
  </section><!-- End Our Team Section -->

  <!-- ======= Footer ======= -->
  <footer id="footer">
    <div class="container">
      <div class="copyright">Copyright &copy; 2020.Company name All rights reserved.<a target="_blank" href="http://sc.chinaz.com/moban/">&#x7F51;&#x9875;&#x6A21;&#x677F;</a></div>
      <div class="credits"></div>
    </div>
  </footer><!-- End Footer -->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值