然后就是重新配置Flask-SQLAlchemy
和Flask-Migrate
插件,我这里准备单独用一个模块管理这些插件。
首先,在app
文件夹下创建exts.py
,然后编辑代码如下:
~/ahoh/app/exts.py 插件模块
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
migrate = Migrate()
然后,在__init__.py
中的create_app()
函数中插入以下代码:
from .exts import db,migrate
db.init_app(app)
migrate.init_app(app,db)
这样,两个插件也就准备好了,接下来是配置文件,在app
文件夹下创建settings.py
,编辑内容如下:
class Default(object):
SQLALCHEMY_DATABASE_URI=‘mysql+pymysql://root:_Why62345@localhost/ahoh?charset=utf8’
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY=‘asl;nadflkgaasdfasyfgher’ # 这里需要一个非常复杂的密码字符串
class Development(Default):
ENV=‘development’
DEBUG=True
class Production(Default):
ENV=‘production’
DEBUG=False
然后,在__init__.py
文件中的create_app()
函数中,app=Flask(__name__)
后,插入如下代码:
app.config.from_object(settings.Default)
这样,配置文件也搞定了。
后面就是模型的配置了,先在app
文件夹下创建models.py
文件,然后编辑内容如下:
from exts import db
from datetime import datetime
class TimestampMixin(object):
created = db.Column(
db.DateTime, nullable=False, default=datetime.utcnow)
updated = db.Column(db.DateTime, onupdate=datetime.utcnow)
status = db.Column(db.Integer, default=0)
class User(TimestampMixin, db.Model):
tablename = ‘t_users’
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True)
password = db.Column(db.String(127), nullable=False)
def repr(self):
return ‘<User %r>’ % self.username
这样我们的模型也就绪了,因为我这里把之前的数据全删掉了,所以还需要走一遍上一篇的创建流程,大家可以试试使用flask db migrate/upgrade
能不能成功。
如果不能成功升级,直接删掉migrations
文件夹,删掉数据库,重来。
想要在Flask Shell
中使用db.create_all()
创建所有对象,还需要在__init__.py
中引入User
。
from .models import User # 这句看起来没什么用,没有还真不行
下面再介绍一遍流程:
(venv)~/ahoh$ flask shell
from app.exts import db
db.create_all()
这样就可以创建表了
然后是,使用Flask-Migrate
插件:
(venv)~/ahoh$ flask db init
(venv)~/ahoh$ flask db migrate
(venv)~/ahoh$ flask db upgrade
最后还要添加git
管理的.gitignore
文件,方便后面使用仓库。
在ahoh
文件夹下创建git
的版本控制文件.gitignore
,然后把下面的内容贴进去:
venv/
migrations/
*.pyc
pycache/
instance/
.pytest_cache/
.coverage
htmlcov/
dist/
build/
*.egg-info/
最后,把templates
和static
文件夹复制到app
文件夹下,并在templates
文件夹下创建auth
和blog
文件夹。
这样所有的项目设置就全部完成了,当前项目的结构:
ahoh/
├── README.en.md
├── README.md
├── app
│ ├── init.py
│ ├── templates # 模板文件
│ │ ├── auth # 用户页面
│ │ ├── blog # 博客页面
│ │ └── bash.html # 模板基类
│ ├── static # 静态文件
│ │ └── style.css # css文件
│ ├── auth.py # 用户蓝图
│ ├── blog.py # 博客蓝图
│ ├── exts.py # 插件模块
│ ├── models.py # 模型模块
│ └── settings.py # 默认设置
├── migrations # 数据版本
└── venv # 虚拟环境
这里还少了test
文件夹,由于短时间内用不到,就先不搞了。
当前状态的代码保存到了Gitee仓库的quickstart
分支。如果没有办法根据教程复现代码,可以直接从这个分支开始。
下面就要测试写一些功能,测试以下改版后的结构有没有问题。
首先就是用户注册视图(/register
),修改视图函数代码如下:
@bp.route(‘/register’, methods=[‘GET’, ‘POST’])
def register():
print(‘regist’)
if request.method == ‘POST’:
username = request.form[‘username’]
password = request.form[‘password’]
error = None
if not username:
error = ‘用户名不能为空’
elif not password:
error = ‘密码不能为空’
elif User.query.filter_by(username=username).first() is not None:
error = ‘用户 “{}” 已存在’.format(username)
if error is None:
u = User(username=username,
password=generate_password_hash(password))
db.session.add(u)
db.session.commit()
return redirect(url_for(‘auth.login’))
flash(error)
return render_template(‘auth/register.html’)
base.html
内容如下:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
(1)Python所有方向的学习路线(新版)
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
(2)Python学习视频
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
(3)100多个练手项目
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
(4)200多本电子书
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
(5)Python知识点汇总
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
41a91b05a542ba9dc8abf2f2f4b1af.png)
(6)其他资料
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-vVfOQyji-1712731959745)]