当前位置: 首页> 文旅> 酒店 > Falsk项目实践与开源贡献(第十一阶段)

Falsk项目实践与开源贡献(第十一阶段)

时间:2025/7/9 3:30:38来源:https://blog.csdn.net/m0_54490473/article/details/140783673 浏览次数:0次

目录

  • 项目实践与开源贡献
    • 1. 实践项目:构建个人博客
      • 1.1 项目结构
      • 1.2 环境配置
      • 1.3 数据模型设计
        • models.py
      • 1.4 用户注册和登录功能
        • forms.py
        • app.py
      • 1.5 文章管理功能
        • 在 app.py 中实现文章的列表与创建功能
      • 1.6 运行应用
    • 2. 开源贡献
      • 2.1 找到开源项目
      • 2.2 克隆项目并设置开发环境
      • 2.3 进行修改和提交
      • 2.4 创建新分支和推送
      • 2.5 提交 Pull Request
      • 2.6 代码审查
    • 3. 结论

项目实践与开源贡献

在这一阶段,我们将学习如何构建一个完整的应用项目,比如个人博客,TOD0管理工具等,并参与开源贡献。以下是本教程的详细内容,涵盖如何实现用户注册、登录和数据展示等功能,并展示如何参与开源项目。

1. 实践项目:构建个人博客

1.1 项目结构

首先,我们需要搭建一个基本的项目结构,包含核心模块如用户认证、博客文章管理等。

blog_app/├── app.py├── models.py├── forms.py├── templates/│   ├── layout.html│   ├── index.html│   ├── login.html│   ├── register.html│   └── post.html├── static/│   └── styles.css└── instance/└── config.py

1.2 环境配置

使用 flaskflask_sqlalchemy 创建项目的环境。确保安装必要的库:

pip install Flask Flask-SQLAlchemy Flask-WTF Flask-Login

1.3 数据模型设计

models.py

models.py 中定义用户和博客文章模型:

from flask_sqlalchemy import SQLAlchemy
from flask_login import UserMixin
from app import appdb = SQLAlchemy(app)class User(db.Model, UserMixin):id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(150), unique=True, nullable=False)password = db.Column(db.String(150), nullable=False)posts = db.relationship('Post', backref='author', lazy=True)class Post(db.Model):id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(150), nullable=False)content = db.Column(db.Text, nullable=False)user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

1.4 用户注册和登录功能

forms.py

定义用于用户注册和登录的表单:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Lengthclass RegistrationForm(FlaskForm):username = StringField('Username', validators=[DataRequired(), Length(min=2, max=150)])password = PasswordField('Password', validators=[DataRequired()])submit = SubmitField('Sign Up')class LoginForm(FlaskForm):username = StringField('Username', validators=[DataRequired()])password = PasswordField('Password', validators=[DataRequired()])submit = SubmitField('Login')
app.py
from flask import Flask, render_template, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager, login_user, UserMixin, login_required, logout_user, login_manager
from forms import RegistrationForm, LoginForm
from models import db, Userapp = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db.init_app(app)login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'@login_manager.user_loader
def load_user(user_id):return User.query.get(int(user_id))@app.route('/register', methods=['GET', 'POST'])
def register():form = RegistrationForm()if form.validate_on_submit():user = User(username=form.username.data, password=form.password.data)db.session.add(user)db.session.commit()flash('Account created!', 'success')return redirect(url_for('login'))return render_template('register.html', form=form)@app.route('/login', methods=['GET', 'POST'])
def login():form = LoginForm()if form.validate_on_submit():user = User.query.filter_by(username=form.username.data).first()if user and user.password == form.password.data:login_user(user)return redirect(url_for('index'))else:flash('Login failed. Check username and password', 'danger')return render_template('login.html', form=form)@app.route('/')
@login_required
def index():return render_template('index.html', title='Home')if __name__ == '__main__':app.run(debug=True)

1.5 文章管理功能

为模型添加 CRUD 操作,展示博客文章。

在 app.py 中实现文章的列表与创建功能
@app.route('/post/new', methods=['GET', 'POST'])
@login_required
def new_post():form = PostForm()if form.validate_on_submit():post = Post(title=form.title.data, content=form.content.data, user_id=current_user.id)db.session.add(post)db.session.commit()flash('Your post has been created!', 'success')return redirect(url_for('index'))return render_template('create_post.html', form=form)@app.route('/post/<int:post_id>')
def post(post_id):post = Post.query.get_or_404(post_id)return render_template('post.html', title=post.title, post=post)

1.6 运行应用

创建数据库:

flask shell
>>> from models import db
>>> db.create_all()

运行项目:

python app.py

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

2. 开源贡献

2.1 找到开源项目

  1. 在 GitHub 上搜索感兴趣的项目,查看项目的问题(Issues)。
  2. 找到标记为“good first issue”或“help wanted”的项。

2.2 克隆项目并设置开发环境

git clone <repo-url>
cd <repo>

查看 README.md 文件,了解项目的构建和依赖。

2.3 进行修改和提交

  1. 在本地进行修改(例如修复 bug,添加功能)。
  2. 提交更改:
git add .
git commit -m "Fix issue with user login"

2.4 创建新分支和推送

创建新分支可以保持你的工作组织良好:

git checkout -b feature/new-feature
git push origin feature/new-feature

2.5 提交 Pull Request

  1. 在 GitHub 上找到项目,点击 “Pull requests” 选项卡。
  2. 点击 “New pull request”,选择你的分支,并描述你所做的更改。

2.6 代码审查

参与代码审查过程,等待维护者的反馈,可能需要根据反馈进行修改。

3. 结论

通过本教程,你已经学习了如何构建一个简单的个人博客应用,并了解了如何参与开源项目。参与开源不仅能提升你的编码能力,还能让你与全球开发者互动,共同推动技术的发展。希望你能在实践项目中不断探索,取得更好的成就!

关键字:Falsk项目实践与开源贡献(第十一阶段)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: