吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4823|回复: 18
收起左侧

[Python 转载] 基于python+flask 开发你的第一个web程序

  [复制链接]
lishunwei 发表于 2020-4-16 22:01
都快五月份了还没开学在家闲着还是闲着 就想着想着把前端时间的学的python和web前端的一点点知识还有数据库都联系起来做点东西
于是就找到python的web轻量框架flask 现在在跟着李辉的电子书做一个简单电影清单的web程序(电子书地址:https://lanzouj.com/ibhyx7c)有兴趣的小伙伴可以一起来哈




我的环境是pycharm+anaconda+mysql8.0
flask框架模板下面默认有两个文件夹分别是static存放静态文件如:css、图片等  template文件夹存放html模板【图1】【图二】【图三】


这里只给出主程序app.py的代码  静态文件和html模板大家有兴趣的可以自取  https://lanzouj.com/ibhzvsh


代码注释可能写的不够完善,望大家谅解,书中所有代码都作出了相关解释,大家可以下载了查看


目前项目半成品效果图【图四】


[Python] 纯文本查看 复制代码
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, render_template,request,redirect,url_for,flash
import click
#导包

app = Flask(__name__)#创建一个app程序


app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1:3306/flask_sql'#我数据库账号密码都是root
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://' + os.path. join(app.root_path, 'data.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SECRET_KEY'] = 'dev'
db = SQLAlchemy(app)#以上部分配置数据库



class User(db.Model):#这里对应数据库的一张表,是用户名
    __tablename__ = 'user'
    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.String(20))

class Movie(db.Model):#这里也是对应一个表,是每个用户对应的观影清单
    __tablename__ = 'list'
    id = db.Column(db.Integer,primary_key = True)
    title = db.Column(db.String(60))
    year = db.Column(db.String(4))

@app.cli.command()#这里是往数据库添加数据,便于测试
def forge():
    """Generate fake data."""
    db.drop_all()
    db.create_all()
    name = 'DaWeiGuo'
    movies = [
        {'title': 'My Neighbor Totoro', 'year': '1988'},
        {'title': 'Dead Poets Society', 'year': '1989'},
        {'title': 'A Perfect World', 'year': '1993'},
        {'title': 'Leon', 'year': '1994'},
        {'title': 'Mahjong', 'year': '1996'},
        {'title': 'Swallowtail Butterfly', 'year': '1996'},
        {'title': 'King of Comedy', 'year': '1999'},
        {'title': 'Devils on the Doorstep', 'year': '1999'},
        {'title': 'WALL-E', 'year': '2008'},
        {'title': 'The Pork of Music', 'year': '2012'},
    ]
    user = User(name=name)
    db.session.add(user)
    for m in movies : 
        movie = Movie(title=m['title'], year=m['year'])
        db.session.add(movie)
        db.session.commit()
    click.echo('Done.')


@app.route('/',methods=['GET','POST'])#flask里边可以用装饰器为每一个url写一个对应的处理函数
def index():
    # user = User.query.first().name
    # print(user)
    if request.method == 'POST':
        title = request.form.get('title')
        year = request.form.get('yaer')
        if not title or not year or len(year) > 4 or len(title) > 60:
            flash('Invalid input.')
            return redirect(url_for('index'))
        movie = Movie(title = title,year = yaer)
        db.session.add(movie)
        db.session.commit()
        flash('Item created')
        return redirect(url_for('index'))
    movies = Movie.query.all()
    # user = User.query.first().name
    # print(User)
    return render_template('index.html', movies = movies)
#
@app.errorhandler(404)#这里是处理404页面
def page_not_found(e):
    # print(e)
    # user = User.query.first()
    return render_template('404.html'),404

@app.context_processor#这个函数是替换html末班的中所有user变量
def inject_user():
    user = User.query.first()
    return dict( user = user.name)

if __name__ == '__main__':
    # db.drop_all()
    app.run()


图1

图1

图二

图二
QQ截图20200416214911.png

图四

图四

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
vagrantear + 1 + 1 谢谢@Thanks!
打字的小强 + 1 + 1 谢谢@Thanks!
asd117118 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zxqatwa 发表于 2020-4-16 23:34
收藏了,感谢
王932123 发表于 2020-4-16 22:11
夜归雪 发表于 2020-4-16 22:17
Destroyer 发表于 2020-4-16 22:22
今天刚开始学习python  准备用它来做后台服务
imhacker 发表于 2020-4-16 22:30
不错,学以致用。
墨淞 发表于 2020-4-16 22:37
学习了,谢谢电子书
小天使xx 发表于 2020-4-16 22:51
感谢分享,拿走学习
cherrypi 发表于 2020-4-16 22:58
谢谢电子书。
jy02427010 发表于 2020-4-16 23:26
和django怎么样
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表