利用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之异步非堵塞实现代码示例”的完整攻略。该攻略包括两部分示例的说明:异步非堵塞实现的示例和使用gunicorn结合gevent的示例。 异步非堵塞实现示例 在Flask中,异步非堵塞实现可以通过使用Flask-SocketIO包中的socketio.run()方法。该方法基于gevent实现了异步非堵塞模型。 首先,需要安装Flask…

    Flask 2023年5月15日
    00
  • Flask 使用Gunicorn部署服务介绍

    下面将详细讲解“Flask 使用 Gunicorn 部署服务介绍”的完整攻略。 一、前置条件 在开始部署 Flask 服务之前,需要确保以下软件已经安装在服务器上: Python 3.x pip virtualenv Gunicorn 可以执行以下命令检查软件是否已经安装: python3 –version pip –version virtualenv…

    Flask 2023年5月15日
    00
  • 详解python开发环境搭建

    详解Python开发环境搭建 在开始Python开发之前,需要先搭建好Python的开发环境。本文将详细讲解Python开发环境的搭建过程。 安装Python 首先,需要安装Python。可以去Python官网下载安装包,选择对应的版本(Python2或Python3),然后按照安装向导完成安装。 安装代码编辑器 安装完Python之后,需要安装一个代码编辑…

    Flask 2023年5月16日
    00
  • Python写一个简单的api接口的实现

    下面我来详细讲解如何用Python编写一个简单的API接口。 首先,我们需要确定我们要提供的API接口的功能和参数。在代码编写之前,需要进行接口设计,包括接口的输入参数、输出内容类型以及接口地址等等。 接着,我们需要选用一个Web框架来实现API接口。这里我们以Flask框架为例。Flask是一个开源的Python Web框架,具有轻量级、易学易用等优点,非…

    Flask 2023年5月16日
    00
  • Flask之flask-script模块使用

    下面是关于“Flask之flask-script模块使用”的完整攻略,包含两个示例说明。 什么是 Flask-Script 模块? Flask-Script 是 Flask 外部扩展库之一,它提供了一组命令行快捷方式,可用于管理应用程序的各种任务,例如初始化数据库、运行开发 web 服务器,等等。Flask-Script 使命令行交互更加方便。 安装 Fla…

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

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

    Flask 2023年5月16日
    00
  • 详解flask表单提交的两种方式

    下面就给您详细讲解“详解flask表单提交的两种方式”的完整攻略。 前言 在使用 Flask 开发中,处理表单是必不可少的,它关系到与用户之间的数据交互。本文将会讨论 Flask 中的两种表单提交方式,包括 get 和 post 请求。 get请求 在 Flask 中,get 请求相对简单,直接用 query string 就能传递表单数据,处理方式如下: …

    Flask 2023年5月15日
    00
  • 浅谈pycharm下找不到sqlalchemy的问题

    下面是“浅谈pycharm下找不到sqlalchemy的问题”的完整攻略: 问题描述: 在PyCharm中,使用import导入sqlalchemy时出现ModuleNotFoundError的错误提示,报告找不到该模块的路径。例如: import sqlalchemy # 报错信息 ModuleNotFoundError: No module named …

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