ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python学习之 flask蓝图使用

2022-02-15 17:33:46  阅读:198  来源: 互联网

标签:__ name python app 蓝图 flask manager html Flask


Flask 2 --- 蓝图

一. 蓝图的用法

作用:将代码模块化,便于管理。
使用步骤:
  • 安装模块

  • 新建一个包,在init.py中,实例蓝图对象

  • 可以创建一个视图文件

举例:

安装blueprint模块

新建一个包,编辑init.py

from flask import Blueprint


# 蓝图对象
"""
参数1: 名称(项目中必须唯一)不能重名
view.py使用本蓝图 blue1
"""
blue1 = Blueprint("blue1",__name__)
from . import view

然后新建一个view.py用于新建视图函数,并导入蓝图

from . import blue1


@blue1.route('/hello/')


def hello():
   return 'hello'

在包外可以创建py文件了:(注意要注册蓝图) app.py

from flask import Flask
from flask_script import Manager # Manager为了可以直接在终端中直接运行,然后可以从网页直接查看,方便快捷,上节课笔记中有
from App import blue1


app = Flask(__name__)
manager = Manager(app)


@app.route('/')
def index():
   return '首页'


# 注册蓝图
app.register_blueprint(blue1)


if __name__ == '__main__':
   manager.run()

 

可以在终端模式下调试app.py

python app.py runserver -d -p 1111

二.模板

 

from flask import Flask, render_template

app = Flask(__name__)
manager = Manager(app)

@app.route('/')
def hello_world():  
   return render_template('index.html',title='首页',content='这是一个模板!')


if __name__ == '__main__':
   manager.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>{{ title }}</title>
</head>
<body>
<h1>
  {{ content }}
</h1>
</body>
</html>

 

三.扩展

1.注释和locals的用法
from flask import Flask, render_template

app = Flask(__name__)
manager = Manager(app)

@app.route('/var/')
def show_var():
   list1 = [1,2,3,5]
   dic = {'name':'王钢蛋','age':19}
   title = 'show'
   return render_template('var.html',**locals())       # 存储定义的所有变量locals


if __name__ == '__main__':
   manager.run()

 

var.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>{{ title }}</title>
</head>
<body>
<div>
   <!-- 这是html的注释 -->
  {{ dic['name'] }} ---- {{ dic['age'] }}
   <p>{{ list1[1] }}</p>
  {# 这是模板的注释 #}
</div>
</body>
</html>

注意:<!---->该注释可在浏览器控制台看到,而模板的注释不会再浏览器后台看到更加保护隐私{# #}

2.算术运算符
from flask import Flask, render_template

app = Flask(__name__)
manager = Manager(app)

@app.route('/express/')
def show_express():
   a = 10
   b = 10
   name = 'tom'
   c = [1,2,3,4,5,6]
   return render_template('express.html',**locals())


if __name__ == '__main__':
   manager.run()

 

express.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       #myadd{width: 100px;height: 100px;background: aquamarine}
       #myif{width: 100px;height: 100px;background: green}
   </style>
</head>
<body>
<div id="myadd">
   <p>{{ a }}+{{ b }}={{ a+b }}</p>
   <p>{{ name + " hello" }}</p>
</div>

<div id="myif">
  {% if a>0 %}
       <p>{{ a }}</p>
  {% endif %}
</div>

</body>
</html>

 

3.if语句
from flask import Flask, render_template

app = Flask(__name__)
manager = Manager(app)


@app.route('/logic/')
def show_logic():
   a = [1,23,4,234]
   b = 20
   return render_template('logic.html',**locals())


if __name__ == '__main__':
   manager.run()

 

logic.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       #box1{width: 100px;background: bisque;}
       #box2{width: 100px;background: chocolate;}
       #box3{width: 100px;background: red;}
   </style>
</head>
<body>
<div id="box1">
  {% for i in a %}
       <p>{{ i }}</p>
  {% else %}
       <p>nothing</p>
  {% endfor %}
</div>

<div id="box2">
  {% if b>=90 %}
       <p>分数为{{ b }}的是优秀生!</p>
  {% endif %}
</div>

<div id="box3">
  {% if b>=60 and b<=80 %}
       <p>分数为{{ b }}的是普通学生!</p>
  {% elif b<60 %}
       <p>分数为{{ b }}的是差生!</p>
  {% endif %}
</div>
</body>
</html>

 

4.继承
from flask import Flask, render_template

app = Flask(__name__)
manager = Manager(app)


@app.route('/base/')
def show_base():
   return render_template('childpage.html',**locals())


if __name__ == '__main__':
   manager.run()

 

base.html(父html):

<!DOCTYPE html>
<html lang="en">
<head>
  {% block head %}
       <meta charset="UTF-8">

      {% block css %}
           <link rel="stylesheet" href="/static/css/base.css">
      {% endblock css %}

      {% block title %}
       <title>Title</title>
      {% endblock title %}

  {% endblock head %}
</head>
<body>
{% block navi %}
   <div class="class1">this is div1</div>
{% endblock navi %}

{% block content %}
   <p>this is father's content</p>
{% endblock content %}
</body>
</html>

 

childpage.html(子html)

{% extends 'base.html' %}

{% block content %}
   <p>这是保留父模板{{ super() }}</p>
   <p>继承父模板(这个内容是改写父模板)</p>
{% endblock content %}

 

5.静态资源的访问
from flask import Flask, render_template
from flask_script import Manager

app = Flask(__name__)
manager = Manager(app)

@app.route('/img/')
def show_img():
   return render_template('static.html')


if __name__ == '__main__':
   manager.run()

 

static.html

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
{#<img src="/static/images/01.jpg" alt="">#}
<img src="{{ url_for("static",filename="images/01.jpg",_external=True) }}" alt="">
</body>
</html>

 

标签:__,name,python,app,蓝图,flask,manager,html,Flask
来源: https://www.cnblogs.com/liu-blogs/p/15897461.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有