利用python实现后端写网页(flask框架)

利用Python实现后端写网页是一种基于Web框架的开发方式,其中Flask框架是一种轻量级的Web框架,非常适合小型应用程序开发。以下是完整的攻略:

准备工作

  1. 安装Python编程环境,建议使用Python 3版本。
  2. 安装Flask框架,可以使用以下命令进行安装:

pip install flask
3. 安装其他需要的扩展包,如flask-wtf、flask-login、flask-mail等,可以使用pip进行安装。

创建Flask应用程序

  1. 导入Flask模块

from flask import Flask
2. 创建app变量并指定应用程序名称

app = Flask(__name__)
3. 添加路由和视图函数,定义处理请求的方法和返回响应数据的方法。例如:

@app.route('/')
def index():
return 'Hello, World!'

4. 启动应用程序

if __name__ == '__main__':
app.run()

Flask应用程序的结构

  1. 创建一个基本的文件结构。例如:

myapp/
├── myapp/
│ ├── __init__.py
│ ├── views.py
│ ├── models.py
│ ├── forms.py
│ ├── templates/
│ │ ├── base.html
│ │ ├── index.html
│ ├── static/
│ │ ├── css/
│ │ │ ├── style.css
│ │ ├── js/
│ │ ├── img/
├── tests/
├── setup.py
├── README.md
├── LICENSE

其中:
- myapp/:项目的根目录。
- myapp/__init__.py:应用程序的初始化文件。
- myapp/views.py:包含所有视图函数的文件。
- myapp/models.py:包含数据库模型的文件。
- myapp/forms.py:包含表单类的文件。
- myapp/templates/:包含应用程序的HTML模板文件。
- myapp/static/:包含应用程序的静态资源文件,如图片、CSS和JavaScript文件。
- tests/:包含测试文件。
- setup.py:包含应用程序的安装信息。
- README.md:应用程序的说明文档。
- LICENSE:应用程序的许可证信息。

  1. myapp/__init__.py文件中添加以下内容:

```
from flask import Flask
from .views import bp

def create_app(config_name=None):
app = Flask(name)
app.config.from_object(config_name or 'config.DevelopmentConfig')
app.register_blueprint(bp)

   return app

``
其中:
-
create_app()函数用于创建Flask应用程序对象。
-
config_name参数用于指定应用程序的配置文件名,可以设置为DevelopmentConfigTestingConfigProductionConfig
-
app.register_blueprint()`方法用于注册子应用程序。

  1. myapp/views.py文件中添加以下内容:

```
from flask import Blueprint, render_template
bp = Blueprint('main', name)

@bp.route('/')
def index():
return render_template('index.html')
``
其中:
-
Blueprint()函数用于创建蓝图对象。
-
render_template()函数用于渲染HTML模板。
-
bp.route()`装饰器用于将视图函数绑定到指定的URL路径上。

  1. myapp/templates/index.html文件中添加以下内容:

```



Hello, World!

Hello, World!


```

这是一个最简单的HTML文档,可以在浏览器中打开查看效果。

  1. 启动应用程序

if __name__ == '__main__':
app = create_app()
app.run()

示例1:注册和登录功能

这是一个简单的注册和登录功能示例,包括以下步骤:

  1. myapp/models.py文件中定义用户模型类:

```
from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash

class User(UserMixin, db.Model):
tablename = 'users'

   id = db.Column(db.Integer, primary_key=True)
   username = db.Column(db.String(50), unique=True, nullable=False)
   email = db.Column(db.String(120), unique=True, nullable=False)
   password_hash = db.Column(db.String(128), nullable=False)

   def __init__(self, username, email, password):
       self.username = username
       self.email = email
       self.password_hash = generate_password_hash(password)

   def check_password(self, password):
       return check_password_hash(self.password_hash, password)

```

其中:
- UserMixin类提供了默认的用户模型类,包含了登录和访问控制功能。
- generate_password_hash()check_password_hash()方法用于加密和解密用户密码。

  1. myapp/forms.py中定义注册和登录表单类:

```
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, Length

class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Sign Up')

class LoginForm(FlaskForm):
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
remember = BooleanField('Remember Me')
submit = SubmitField('Login')
```

其中:
- FlaskFormWTForms模块中的一个基类,用于创建表单类。
- StringFieldPasswordField类用于创建输入字段。
- SubmitField类用于创建提交按钮。
- validators参数用于配置输入字段的验证规则。

  1. myapp/views.py中添加注册和登录视图函数:

```
from flask import Blueprint, render_template, redirect, url_for, flash
from flask_login import login_user, logout_user, login_required, current_user
from .forms import LoginForm, RegistrationForm
from .models import db, User

auth_bp = Blueprint('auth', name)

@auth_bp.route('/register', methods=['GET', 'POST'])
def register():
form = RegistrationForm()
if form.validate_on_submit():
user = User(username=form.username.data, email=form.email.data, password=form.password.data)
db.session.add(user)
db.session.commit()
flash('Your account has been created!', 'success')
return redirect(url_for('auth.login'))
return render_template('register.html', title='Register', form=form)

@auth_bp.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and user.check_password(form.password.data):
login_user(user, remember=form.remember.data)
next_page = request.args.get('next')
return redirect(next_page or url_for('main.index'))
else:
flash('Login unsuccessful. Please check email and password', 'danger')
return render_template('login.html', title='Login', form=form)

@auth_bp.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('main.index'))
```

其中:
- render_template()函数用于渲染HTML模板。
- redirect()函数用于重定向到指定路由。
- url_for()函数用于获取指定视图函数的URL路径。
- flash()函数用于显示一个信息提示框。
- login_user()函数用于将用户登录。
- logout_user()函数用于将用户登出。
- login_required()修饰器用于限制只能已经登录的用户访问指定路由。

  1. myapp/templates中添加HTML模板文件和相关CSS、JS文件。

示例2:发送邮件功能

这是一个简单的发送邮件功能示例,包括以下步骤:

  1. myapp/__init__.py文件中添加邮件配置信息:

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('EMAIL_USER')
app.config['MAIL_PASSWORD'] = os.environ.get('EMAIL_PASSWORD')

其中EMAIL_USEREMAIL_PASSWORD是你的邮箱账号和密码。

  1. myapp/views.py文件中添加发送邮件函数:

```
from flask_mail import Message, Mail
mail = Mail(app)

def send_email(to, subject, template):
msg = Message(
subject,
recipients=[to],
html=template,
sender='noreply@myapp.com'
)
mail.send(msg)
``
其中:
-
Mail()类用于创建邮件对象。
-
Message()类用于创建邮件的消息体。
-
send_email()`函数用于发送邮件。

  1. myapp/views.py文件中添加发送邮件视图函数:

```
from .forms import ContactForm

@app.route('/contact', methods=['GET', 'POST'])
def contact():
form = ContactForm()
if form.validate_on_submit():
send_email(form.email.data, 'New Message from Myapp', 'contact', form=form)
flash('Your message has been sent!', 'success')
return redirect(url_for('main.index'))
return render_template('contact.html', form=form)
``
其中:
-
send_email()函数用于发送邮件。
-
ContactForm`类用于创建发送邮件的表单。

  1. 创建myapp/templates/contact.html模板文件和发送邮件后的成功页面。

以上就是利用Python实现后端写网页(Flask框架)的完整攻略,两个示例分别是注册和登录功能以及发送邮件功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用python实现后端写网页(flask框架) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Flask自定义序列化超详细讲解

    Flask自定义序列化超详细讲解 在Flask框架中,序列化是一个非常常见的操作。许多情况下需要将数据对象序列化为字符串或二进制流来方便传输和存储。在Flask中可以使用不同的序列化方法,例如使用Python内置的pickle或JSON等格式。然而,有时候需要自定义序列化方法,以满足某些特定的业务需求。该文章将通过两个示例来展示如何实现Flask自定义序列化…

    Flask 2023年5月15日
    00
  • Pyhon Flask框架:第一个Flask程序

    下面是Python Flask框架第一个Flask程序的完整攻略。 第一步:安装Flask 首先,我们需要在本地安装Flask。安装Flask的方式很简单,只需要在命令行中输入以下命令即可: pip install Flask 第二步:创建Flask应用 接下来,我们需要在本地创建一个Flask应用。在你选择的文件夹中创建一个名为“app.py”的文件,并用…

    Flask 2023年5月15日
    00
  • Python Type Hints 学习之从入门到实践

    下面是详细讲解“Python Type Hints 学习之从入门到实践”的完整攻略: Python Type Hints 学习之从入门到实践 什么是 Python Type Hints Python 从 3.5 版本开始引入了 Type Hints 的概念,它是一种用于标注函数、变量、类等对象类型的注释。Python 并不会在运行时对其进行强制校验,但是可以…

    Flask 2023年5月16日
    00
  • Python的Flask框架与数据库连接的教程

    下面我将详细讲解如何用Python的Flask框架连接数据库的完整攻略。这个过程中会包含两个示例,分别是连接MySQL和连接SQLite。 1. 安装Flask和数据库连接驱动 在开始之前,需要确保已经安装了Python和pip,并且通过pip安装了Flask和要连接的数据库的相应驱动。我们以连接MySQL和SQLite为例,分别需要安装pymysql和sq…

    Flask 2023年5月15日
    00
  • Flask 上传自定义头像的实例详解

    我们来详细讲解一下“Flask 上传自定义头像的实例详解”的完整攻略。 1. 确定需求 首先,我们需要明确我们的需求,即用户能够上传自己的头像,并在用户页面中显示。这个功能可以分为两个部分: 用户头像上传:用户需要有一个页面来上传头像,并把上传的头像保存在服务器上。 用户头像显示:用户上传了头像后,在用户页面中可以显示出来。 2. 创建Flask应用 在开始…

    Flask 2023年5月16日
    00
  • 使用Vue.js和Flask来构建一个单页的App的示例

    下面我会详细讲解使用Vue.js和Flask来构建一个单页App的示例,包含两个示例说明。 示例1:使用Vue.js和Flask来搭建前后端分离的Todo应用 前端Vue.js 使用Vue CLI创建项目 vue create todo-vue 安装axios npm install axios 编写Todo.vue组件 <template> &…

    Flask 2023年5月16日
    00
  • flask 框架操作MySQL数据库简单示例

    下面是详细的“flask 框架操作MySQL数据库简单示例”教程: 1. 准备工作 在开始之前,你需要先安装好Python和MySQL,同时安装好以下两个Python库:- Flask:一个基于 Python 的轻量级 Web 应用框架- Flask-MySQLdb:一个用于在 Flask 应用中连接和操作 MySQL 数据库的库 以macOS系统为例,可以…

    Flask 2023年5月15日
    00
  • python文件路径操作方法总结

    基于”python文件路径操作方法总结”这个主题,我会给出完整的攻略,包括以下几个部分的讲解: 什么是文件路径? Python中的文件路径表示方式 文件路径的操作方式(包括绝对路径和相对路径) 示例说明 1. 什么是文件路径? 文件路径是标识文件在计算机上存储位置的一串字符,一般包括文件所在驱动器、目录、文件名和文件扩展名等内容。 在Windows上,文件路…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部