Flask文档学习(一)搭建登录界面

环境准备

  1. Ubuntu18(一般Flask都是部署在linux的服务器)
  2. python3
  3. 为项目搭建只带有flask的虚拟环境

步骤

  1. 建立一个放项目的文件夹例如:myproject
  2. 创建python虚拟环境,python3 -m venv venv如果遇到提示要安装virtualenv就按提示安装即可。
  3. 注意在当前项目路径下激活虚拟环境. venv/bin/activate
  4. 在虚拟环境中pip安装Flask,这里可以换清华源安装快些pip install Flask-i https://pypi.tuna.tsinghua.edu.cn/simple
  5. 创建一个flaskr文件夹里面放一个__init__.py文件并写入一下内容
import os

from flask import Flask


def create_app(test_config=None):
    # create and configure the app
    app = Flask(__name__, instance_relative_config=True)
    app.config.from_mapping(
        SECRET_KEY='dev',
        DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'),
    )

    if test_config is None:
        # load the instance config, if it exists, when not testing
        app.config.from_pyfile('config.py', silent=True)
    else:
        # load the test config if passed in
        app.config.from_mapping(test_config)

    # ensure the instance folder exists
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # a simple page that says hello
    @app.route('/hello')
    def hello():
        return 'Hello, World!'


    from . import db
    db.init_app(app)
    
    from . import auth
    app.register_blueprint(auth.bp)


    from . import blog
    app.register_blueprint(blog.bp)
    app.add_url_rule('/', endpoint='index')


    return app
  1. myproject文件夹目录下设置flask要启动的APP和设置为开发模式(即每次修改后不需重启服务直接刷新浏览器即可看到效果)
export FLASK_APP=flaskr
export FLASK_ENV=development
flask run
  1. 使用SQLite嵌入式数据库,优点无需连接数据库,缺点性能相对其他数据库较差(但作为小demo够用)。在flaskr目录下新建 db.py 写入以下内容
import sqlite3

import click
from flask import current_app, g
from flask.cli import with_appcontext

def init_app(app):
    app.teardown_appcontext(close_db)
    app.cli.add_command(init_db_command)

def init_db():
    db = get_db()

    with current_app.open_resource('schema.sql') as f:
        db.executescript(f.read().decode('utf8'))


@click.command('init-db')
@with_appcontext
def init_db_command():
    """Clear the existing data and create new tables."""
    init_db()
    click.echo('Initialized the database.')

def get_db():
    if 'db' not in g:
        g.db = sqlite3.connect(
            current_app.config['DATABASE'],
            detect_types=sqlite3.PARSE_DECLTYPES
        )
        g.db.row_factory = sqlite3.Row

    return g.db


def close_db(e=None):
    db = g.pop('db', None)

    if db is not None:
        db.close(
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C8051f020是一款集成了高速8位CPU、片内存储器、片内外设和多种外部接口的微控制器。本文档将介绍C8051f020的基本架构、外设和编程方法。 1. 基本架构 C8051f020采用了基于Harvard结构的体系结构,包含了片内存储器、片内外设和多种外部接口。它的基本架构如下图所示: ![C8051f020基本架构](https://i.imgur.com/piv4w4Q.png) 其中,CPU采用了高速8位8051架构,最高主频可达50MHz;片内存储器包含了32KB的Flash程序存储器和256B的SRAM数据存储器;片内外设包含了多种模拟和数字外设,如ADC、DAC、UART、SPI、I2C等;多种外部接口包括了GPIO、中断、定时器、看门狗等。 2. 外设介绍 2.1 ADC C8051f020内置12位SAR ADC,最高转换速率为1.6MSPS。可通过配置ADC控制寄存器实现不同的转换精度、转换速率和参考电压。ADC的输入通道可选择片内外部引脚或片外引脚。 2.2 DAC C8051f020内置12位DAC,最高转换速率为200kSPS。可通过配置DAC控制寄存器实现不同的转换精度、转换速率和输出电压。DAC的输出通道可选择片内外部引脚或片外引脚。 2.3 UART C8051f020内置UART模块,支持多种波特率,最高可达115200bps。可通过配置UART控制寄存器实现不同的数据位数、校验位和停止位。UART的输入输出通道可选择片内外部引脚或片外引脚。 2.4 SPI C8051f020内置SPI模块,支持主从模式和4种时钟极性和相位。可通过配置SPI控制寄存器实现不同的数据位数、时钟速率和传输模式。SPI的输入输出通道可选择片内外部引脚或片外引脚。 2.5 I2C C8051f020内置I2C模块,支持标准模式和快速模式。可通过配置I2C控制寄存器实现不同的数据位数、时钟速率和传输模式。I2C的输入输出通道可选择片内外部引脚或片外引脚。 2.6 GPIO C8051f020共有32个GPIO引脚,可作为输入或输出引脚。可通过配置GPIO控制寄存器实现不同的引脚功能和电平状态。GPIO引脚还可用于中断、定时器和看门狗等外部接口。 3. 编程方法 C8051f020可通过C语言编程或汇编语言编程。以下是一个简单的C语言程序示例,实现了ADC的初始化和采样: ```c #include <C8051f020.h> void init_adc() { ADC0CN = 0x02; // Enable ADC and set ADC0 to gain 1 REF0CN = 0x08; // Enable on-chip VREF and set voltage to 2.4V } unsigned int read_adc(unsigned char channel) { AMX0SL = channel; // Select ADC channel ADC0CN |= 0x20; // Start ADC conversion while (!(ADC0CN & 0x10)); // Wait for conversion to complete return ADC0; // Return ADC result } void main() { unsigned int result; init_adc(); result = read_adc(0); // Do something with result while (1); } ``` 以上程序中,init_adc()函数实现了ADC的初始化,包括使能ADC和设置参考电压;read_adc()函数实现了ADC的采样,包括选择通道、触发转换和等待转换完成;main()函数调用了init_adc()函数和read_adc()函数,并将采样结果存储在result中。程序最后进入死循环,等待后续操作。 除了C语言编程外,C8051f020还可以使用Keil、IAR等IDE进行集成开发,方便调试和程序烧录。 4. 总结 C8051f020是一款功能丰富、性能优异的微控制器,具有高速CPU、片内存储器、片内外设和多种外部接口等多种特点。通过本文档学习,你可以了解到C8051f020的基本架构、外设和编程方法,为后续开发和应用提供了基础知识和参考依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值