1.模板继承

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title> 盒子1
<!-- <link rel="stylesheet" href="/static/css/commons.css" /> --> 引入 css第一种方式
<link rel="stylesheet" href="{{ url_for('static',filename='css/commons.css') }}" /> 引入css第二种方式 {% block css %}{% endblock %}     盒子2
</head>
<body>
<div class="pg-header"></div>
<div class="pg-body">
{% block body %}{% endblock %} 盒子3
</div> {% block js %}{% endblock %} 盒子4
</body>
</html>

2.连接数据库

db_pool.py ---------------------------------------------  创建数据库连接池

import time
import pymysql
import threading
from DBUtils.PooledDB import PooledDB, SharedDBConnection POOL = PooledDB(
creator=pymysql, # 使用链接数据库的模块
maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数
mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
maxcached=5, # 链接池中最多闲置的链接,0和None不限制
maxshared=3,
# 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制
setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
ping=0,
# ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always
host='47.93.4.198',
port=3306,
user='root',
password='',
database='s6',
charset='utf8'
)
sqlhelper.py -------------------------------------------------------  因为每次操作都需要连接连接池,获取游标等,所以把这些操作封装起来

from utils.pool import db_pool
import pymysql class SQLHelper(object): def __init__(self):
self.conn = None
self.cursor = None def open(self, cursor=pymysql.cursors.DictCursor):
self.conn = db_pool.POOL.connection()
self.cursor = self.conn.cursor(cursor=cursor) def close(self):
self.cursor.close()
self.conn.close() def fetchone(self, sql, params):
cursor = self.cursor
cursor.execute(sql, params)
result = cursor.fetchone() return result def fetchall(self, sql, params):
cursor = self.cursor
cursor.execute(sql, params)
result = cursor.fetchall()
return result def __enter__(self):
self.open()
return self def __exit__(self, exc_type, exc_val, exc_tb):
self.close()
login.py ---------------------------------------------

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Blueprint, request, render_template, redirect, session,current_app
from utils.pool import db_pool
from utils.pool.sqlhelper import SQLHelper
account = Blueprint('account', __name__) @account.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
else:
# 方式一
# helper = SQLHelper()
# helper.open()
# result = helper.fetchone('select * from users where name=%s and pwd = %s',[request.form.get('user'),request.form.get('pwd'),])
# helper.close()
# 方式二:
with SQLHelper() as helper:
result = helper.fetchone('select * from users where name=%s and pwd = %s',[request.form.get('user'),request.form.get('pwd'),])
if result:
current_app.auth_manager.login(result['name'])
return redirect('/index') return render_template('login.html')

3.应用flask-session

from flask_session import Session
#引入session后,注册app
app = Flask(__name__)
Session(app)
settings.py 配置     --------------

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis class BaseConfig(object):
SESSION_TYPE = 'redis' # session类型为redis
SESSION_KEY_PREFIX = 'session:' # 保存到session中的值的前缀
SESSION_PERMANENT = False # 如果设置为True,则关闭浏览器session就失效。
SESSION_USE_SIGNER = False # 是否对发送到浏览器上 session:cookie值进行加密 class ProductionConfig(BaseConfig):
SESSION_REDIS = redis.Redis(host='47.93.4.195', port=6379, password='') # 用于连接redis的配置 class DevelopmentConfig(BaseConfig):
SESSION_REDIS = redis.Redis(host='47.93.4.196', port=6379, password='') # 用于连接redis的配置 class TestingConfig(BaseConfig):
SESSION_REDIS = redis.Redis(host='47.93.4.197', port=6379, password='') # 用于连接redis的配置

其他的正常操作就可以了

python-flask基本应用模板的更多相关文章

  1. 怎么用Python Flask模板jinja2在网页上打印显示16进制数?

    问题:Python列表(或者字典等)数据本身是10进制,现在需要以16进制输出显示在网页上 解决: Python Flask框架中 模板jinja2的If 表达式和过滤器 假设我有一个字典index, ...

  2. Python Flask学习笔记之模板

    Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...

  3. [python][flask] Jinja 模板入门

    Flask 和 Django 附带了强大的 Jinja 模板语言. 对于之前没有接触过模板语言的人来说,这类语言基本上就是包含一些变量,当准备渲染呈现 HTML 时,它们会被实际的值替换. 这些变量放 ...

  4. windows下python+flask环境配置详细图文教程

    本帖是本人在安装配置python和flask环境时所用到的资源下载及相关的教程进行了整理罗列,来方便后面的人员,省去搜索的时间.如果你在安装配置是存在问题可留言给我. 首先罗列一下python+fla ...

  5. 使用wfastcgi在IIS上部署Python Flask应用

    本文介绍了如何在Windows上部署Python Flask应用,相关环境如下: 操作系统:windows 7 Python:3.4 WFastCGI: 2.2 应用所用到的包版本如下: Flask= ...

  6. Taffy Web开发,Python Flask实践详解

    1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 2. 实现细节 页面使用Python Flask +Bootstrap开发,还 ...

  7. flask中jinjia2模板引擎使用详解1

    在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活.快速和安全的. 模 ...

  8. python Flask

    python Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  9. python+flask开发小白第二天

    使用VSCode编译python web页面 1.先从最基础的说起吧,关于VSCode的使用: 运行python程序与运行java,c,c++程序一样,需要新建一个文件,第一个文件建议不要新建在本地的 ...

  10. python flask实现小项目方法

    本文目的是为了完成一个项目用到的flask基本知识,例子会逐渐加深.最好对着源码,一步一步走. 下载源码,运行 pip install -r requirements.txt 建立环境 python ...

随机推荐

  1. [JavaScript] - 判断时间是否是当天

    https://www.codewars.com/kata/is-the-date-today/train/javascript function isToday(date) { return new ...

  2. WijmoJS 全面支持 Angular 7

    概述 首先恭喜Angular团队发布Angular 7.0.0版本! 对于大多数开发人员,只需要执行一个命令就可以更新到Angular 7: ng update \@angular/cli \@ang ...

  3. Chrome控制台console的各种用法(方便调试)

    1.输出信息 console.log('消息内容!'); //输出普通信息 console.info('消息内容!'); //输出提示信息 console.error('消息内容!');//输出错误信 ...

  4. UVA1025 城市里的间谍

    #include<iostream> #include<cstdio> #include<memory.h> using namespace std; #defin ...

  5. ECharts配置项之title(标题)

    1.标题居中 //left的值为'left', 'center', 'right' title:{ left:'center' } 2.主副标题之间的间距 title:{ //默认为10 itemGa ...

  6. 【抓包】【Charles】

    Mac抓包神器-----Charles Charles 是一款Mac上的HTTP代理服务器.HTTP监视器.反向代理服务器,可以让开发者监视查看所有连接互联网的HTTP通信,包括请求,响应和HTTP头 ...

  7. Django本地开发,引用静态文件,火狐浏览器不能访问静态文件,谷歌浏览器却能访问静态文件

    查了一下是settings.py设置问题 # Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.1 ...

  8. DLL.LoadLibrary失败(126)

    1.LoadLibrary 返回 NULL,GetLastError 显示的是 错误码126,msdn上是这样的: ERROR_MOD_NOT_FOUND 126 (0x7E) The specifi ...

  9. 离线人脸识别C#类库分享 虹软2.0版本

    目前只封装了人脸检测部分的类库,供大家交流学习,肯定有问题,希望大家在阅读使用的时候及时反馈,谢谢!使用虹软技术开发完成 戳这里下载SDKgithub:https://github.com/dayAn ...

  10. JS中innerHTML、outerHTML、innerText 、outerText、value的区别与联系?jQuery中的text()、html()和val()

    一.JS中innerHTML.outerHTML.innerText .outerText.value的区别与联系?jS中设置或者获取所选内容的值:①innerHTML :属性设置或返回该标签内的HT ...