当前位置:   article > 正文

python快速搭建开源后台Flask_flask开源项目

flask开源项目
  1. 安装Flask

命令行中输入以下命令进行安装:

pip install Flask

  1. 创建Flask应用

在项目文件夹中创建一个名为app.py的文件,并在其中编写如下代码:

  1. from flask import Flask
  2. app = Flask(__name__)
  3. @app.route('/')
  4. def hello():
  5. return 'Hello, World!'

这个应用程序是最简单的Flask应用程序,它将响应根URL的请求并在浏览器中显示“Hello,World!”消息。

  1. 运行Flask应用

将以下代码添加到app.py文件的末尾:

  1. if __name__ == '__main__':
  2. app.run(debug=True)

在命令行中进入项目文件夹并运行以下命令:

python app.py

在浏览器中输入http://localhost:5000,您应该会看到“Hello,World!”。

  1. 创建视图函数和模板

在app.py文件中创建一个新的路由和视图函数来响应特定URL的请求,并渲染一个模板。例如:

  1. from flask import render_template
  2. @app.route('/about')
  3. def about():
  4. return render_template('about.html')

在模板文件夹中创建一个名为about.html的HTML模板,并在其中添加内容。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>About Us</title>
  5. </head>
  6. <body>
  7. <h1>About Us</h1>
  8. <p>We are a team of developers working on creating great software!</p>
  9. </body>
  10. </html>

现在,在浏览器中输入http://localhost:5000/about,将显示about.html模板。

  1. 连接到数据库

要使用Flask和关系型数据库,您可以使用Flask-SQLAlchemy扩展。安装扩展后,您可以定义一个数据库模型并使用SQLAlchemy创建和访问数据库。例如:

  1. from flask_sqlalchemy import SQLAlchemy
  2. app = Flask(__name__)
  3. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
  4. db = SQLAlchemy(app)
  5. class User(db.Model):
  6. id = db.Column(db.Integer, primary_key=True)
  7. name = db.Column(db.String(80), unique=True, nullable=False)
  8. email = db.Column(db.String(120), unique=True, nullable=False)
  9. def __repr__(self):
  10. return f'<User {self.name}>'

在这个例子中,我们定义了一个名为User的模型并使用SQLite数据库。要使用这个模型,我们需要运行以下命令以创建数据库表:

  1. from app import db
  2. db.create_all()

  1. 添加用户注册和登录功能

在Flask应用程序中添加用户注册和登录功能需要使用Flask-WTF和Flask-Login扩展。Flask-WTF用于在Web表单中处理数据并验证输入,Flask-Login用于管理用户会话。在这个例子中,我们将创建一个注册表单,用户可以在其中输入用户名和电子邮件地址,并创建一个登录页面,用户可以在其中输入用户名和密码。

  1. from flask_login import UserMixin, LoginManager, login_required, login_user, logout_user
  2. from flask_wtf import FlaskForm
  3. from wtforms import StringField, PasswordField, SubmitField
  4. from wtforms.validators import DataRequired, Email, EqualTo
  5. app.config['SECRET_KEY'] = 'your_secret_key_here'
  6. login_manager = LoginManager(app)
  7. class LoginForm(FlaskForm):
  8. username = StringField('Username', validators=[DataRequired()])
  9. password = PasswordField('Password', validators=[DataRequired()])
  10. submit = SubmitField('Log In')
  11. class RegisterForm(FlaskForm):
  12. username = StringField('Username', validators=[DataRequired()])
  13. email = StringField('Email', validators=[DataRequired(), Email()])
  14. password = PasswordField('Password', validators=[DataRequired(), EqualTo('confirm', message='Passwords must match')])
  15. confirm = PasswordField('Confirm Password')
  16. submit = SubmitField('Register')
  17. @login_manager.user_loader
  18. def load_user(user_id):
  19. return User.query.get(int(user_id))
  20. @app.route('/login', methods=['GET', 'POST'])
  21. def login():
  22. form = LoginForm()
  23. if form.validate_on_submit():
  24. user = User.query.filter_by(username=form.username.data).first()
  25. if user and user.password == form.password.data:
  26. login_user(user)
  27. return redirect('/')
  28. return render_template('login.html', form=form)
  29. @app.route('/logout')
  30. @login_required
  31. def logout():
  32. logout_user()
  33. return redirect('/')
  34. @app.route('/register', methods=['GET', 'POST'])
  35. def register():
  36. form = RegisterForm()
  37. if form.validate_on_submit():
  38. user = User(username=form.username.data, email=form.email.data, password=form.password.data)
  39. db.session.add(user)
  40. db.session.commit()
  41. login_user(user)
  42. return redirect('/')
  43. return render_template('register.html', form=form)

在这个例子中,我们定义了一个名为LoginForm的表单,用户可以在其中输入用户名和密码,一个名为register的路由和视图函数,允许用户创建帐户,一个名为login的路由和视图函数,允许用户登录,以及一个名为logout的路由和视图函数,允许用户注销。

  1. 部署Flask应用

在开发完成后,您需要将应用程序部署到生产服务器上。有许多不同的选择可供选择,包括Heroku,AWS,Digital Ocean等。

如果您使用的是VPS,则可以使用Gunicorn和Nginx来部署Flask应用程序。以下是一些基本步骤:

  • 安装Gunicorn和Nginx
sudo apt-get install gunicorn nginx

  • 创建一个Gunicorn systemd服务

创建一个名为your_app.service的文件,然后将以下内容添加到该文件中:

  1. [Unit]
  2. Description=Gunicorn instance to serve your_app
  3. After=network.target
  4. [Service]
  5. User=your_username
  6. Group=www-data
  7. WorkingDirectory=/home/your_username/your_app
  8. Environment="PATH=/home/your_username/your_app/venv/bin"
  9. ExecStart=/home/your_username/your_app/venv/bin/gunicorn --workers 3 --bind unix:your_app.sock -m 007 wsgi:app
  10. [Install]
  11. WantedBy=multi-user.target

然后,使用以下命令启动服务:

  1. sudo systemctl start your_app
  2. sudo systemctl enable your_app

  • 配置Nginx

创建一个名为your_app的文件,然后将以下内容添加到该文件中:

  1. server {
  2. listen 80;
  3. server_name your_domain.com;
  4. location / {
  5. include proxy_params;
  6. proxy_pass http://unix:/home/your_username/your_app/your_app.sock;
  7. }
  8. location /static {
  9. alias /home/your_username/your_app/static;
  10. }
  11. }

然后,使用以下命令重新加载Nginx配置:

sudo systemctl reload nginx

  • 配置防火墙

使用以下命令打开80端口:

sudo ufw allow 80/tcp

现在,您的Flask应用程序已经成功部署在生产服务器上,并可以在Web浏览器中访问。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号