lishunwei 发表于 2020-4-16 22:01

基于python+flask 开发你的第一个web程序

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

https://static.52pojie.cn/static/image/hrline/1.gif


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


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


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


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

https://static.52pojie.cn/static/image/hrline/1.gif
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()


zxqatwa 发表于 2020-4-16 23:34

收藏了,感谢

王932123 发表于 2020-4-16 22:11

学习了学习了

https://img.alicdn.com/dot.gif

夜归雪 发表于 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怎么样
页: [1] 2
查看完整版本: 基于python+flask 开发你的第一个web程序