Python网站开发_基于flask

flask简介

flask是一种基于python ,并且依赖于Jinja2模板引擎(提供网页解析)和 Werkzeug WSGI服务(python web应用与web 服务之间的接口)的一种微型框架。其中:
Jinja2模板引擎:通俗来讲就是服务器接收到用户请求之后,将数据传入HTML文件中后,经过模板引擎的渲染将其呈现在网页中响应给用户。
Werkzeug WSGI:python web 应用程序是一个被调用的对象,它无法直接与web 服务器直接建立联系,所以WSGI的功能就是提供程序与服务之间的通信。它规定了一个app接口,server会传递给 web 应用所有的请求信息以及响应之后需要调用的函数。

flask设计理念——MVT

M(Models)模型层:负责数据库的建模
V (Views)视图层:处理与用户交互的部分内容。如:通过路由处理用户的请求并给出响应
T(Templates)模板层:用于处理用户显示的内容。如:html、css、js等

用户在浏览器上发起URL请求,浏览器将请求发送给视图层V,视图层V根据请求地址分配对应的视图函数,视图函数通过模型层M查找数据,并将数据传送给模板层T,最后模板层T输出最终形成的网页给用户。

flask部署

linux系统中安装python3,然后执行以下命令

pip3 install flask

或者通过IDE编辑器如pycharm添加flask

flask成功运行

pycharm中编写如下代码:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

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

右键点击“运行app”

然后看到如下提示:

打开浏览器,访问http://127.0.0.1:5000

设置任意地址可访问此服务器


if __name__ == '__main__':
    app.run(host='0.0.0.0')

flask大神-增量式冲塔!

flask-实现登录/注册逻辑(无SQL)

核心代码如下:

from flask import Flask,render_template,request

app = Flask(__name__)

#网站路由
@app.route('/',methods=['GET'])
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:
        print(request.form)         #接收用户通过GET形式发送的数据。
        return  '登录成功!'

@app.route('/register', methods=['GET','POST'])
def register():
    if request.method == 'GET':
        return render_template('register.html')
    else:
        print(request.form)         #打印用户通过表单提交的所有数据。
        user = request.form.get('username')
        passwd = request.form.get('password')
        print(user,passwd)          #可将用户信息写入文件、Excel或数据库中,实现注册功能。此处仅作打印。
        return '注册成功!'
    
if __name__ == '__main__':
    app.run(host='0.0.0.0')

点击运行,浏览器访问

代码结构如图所示:

t

贡献出github地址:https://github.com/dustfree7/Python_flask-web-login-and-register.git

flask-实现简单的信息管理功能(无SQL)

核心代码如下:

#导入Flask对象。
from flask import Flask,render_template,request,redirect

#使用Flask对象创建一个app对象。
app = Flask(__name__)

students = [
    {'name': 'dustfree', 'chinese': '65', 'math': '65', 'english': '65'},
    {'name': '小白狼', 'chinese': '65', 'math': '65', 'english': '65'},
    {'name': '绯夜', 'chinese': '65', 'math': '65', 'english': '65'},
    {'name': '棒棒', 'chinese': '65', 'math': '65', 'english': '65'},
]

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

@app.route('/login', methods=['GET','POST'])
def login():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        #此处需要连接数据库进行账号密码校验。
        print('从服务器接收到的数据:',username,password)
        #登录成功之后,应该跳转到管理页面。
        return redirect('/admin')
    return render_template('login.html')

@app.route('/admin')
def admin():
    return render_template('admin.html',students=students)

@app.route('/add', methods=["GET","POST"])
def add():
    if request.method == 'POST':
        username = request.form.get('username')
        chinese = request.form.get('chinese')
        math = request.form.get('math')
        english = request.form.get('english')
        print('获取的学员信息:',username,math,chinese,english)
        students.append({'name':username, 'chinese': chinese, 'math': math, 'english': english})
        return redirect('/admin')
    return render_template('add.html')

@app.route('/delete')
def delete_student():
    #在后台拿到学员的名字
    print(request.method)
    username = request.args.get('name')
    #找到学员并删除信息
    for stu in students:
        if  stu['name'] == username:
            students.remove(stu)
    return redirect('/admin')

@app.route('/change',methods=["GET","POST"])
def change_student():
    username = request.args.get('name')
    if  request.method == "POST":
        username = request.form.get('username')
        chinese = request.form.get('chinese')
        math = request.form.get('math')
        english = request.form.get('english')
        for stu in students:
            if  stu['name'] == username:
                stu['chinese'] = chinese
                stu['math'] = math
                stu['english'] = english
        return redirect('/admin')
    for  stu in students:
        if stu['name'] == username:
            #需要在页面中渲染学生的成绩数据
            return render_template('change.html',students=stu)

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

点击运行,浏览器访问

其它点击按钮后的效果就不在这里展示了......

注:本项目引入了bootstrap.css对前端进行了简单的美化,在此不作赘述。有兴趣的朋友可移步至https://bootstrapdoc.com/docs/5.0/getting-started/introduction/

代码结构如图所示:

贡献出github地址:https://github.com/dustfree7/Python_flask-student-info-manage-system.git

flask-实现数据库联动、增加验证码

 

flask完整项目示例一:小饭桌管理系统

flask完整项目示例二:xx系统

 

posted @ 2022-10-15 18:56  dustfree  阅读(407)  评论(2编辑  收藏  举报