《我用Python写网站03》项目结构设计,2024年最新蚂蚁金服测试开发面试

本文详细介绍了如何在Flask项目中配置SQLAlchemy和Flask-Migrate插件,包括设置数据库连接、模型定义、迁移操作以及管理gitignore文件和项目结构。作者还分享了用户注册视图的实现和学习资源推荐。
摘要由CSDN通过智能技术生成

主页

然后就是重新配置Flask-SQLAlchemyFlask-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/

最后,把templatesstatic文件夹复制到app文件夹下,并在templates文件夹下创建authblog文件夹。

这样所有的项目设置就全部完成了,当前项目的结构:

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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。

别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。

我先来介绍一下这些东西怎么用,文末抱走。


(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

(4)200多本电子书

这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。

基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。

(5)Python知识点汇总

知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。

在这里插入图片描述

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

41a91b05a542ba9dc8abf2f2f4b1af.png)

(6)其他资料

还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。

在这里插入图片描述

这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-vVfOQyji-1712731959745)]

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值