flask 进阶:留言板

本练手项目的码云地址为 : https://gitee.com/fuyi2333/flask
鉴于本人学的为纯后端 对于前端的理解很少 这里被迫无奈只要显示出信息 就算完成
分析 :一个标准的留言板
有姓名 留言内容 提交
其他人留言的内容 留言时间

我们首先
配置数据库

    db.init_app(app)
    with app.app_context():    #上下文创建数据库
        db.create_all()

以及在配置文件中配置数据库地址 具体配置在flask基础数据库中

配置表单内容
在上面提到的create_app()中添加

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


class MessagesForm(FlaskForm):
    name = StringField(label='用户名', validators=[
        DataRequired(), Length(1, 20, message='请输入正确的名称')],
                       render_kw={'placeholder': '请输入你的名字'}
                       )
    body = StringField(label='留言', validators=[
        DataRequired(), Length(1, 100, message='你输入的内容过长或过短')],
                       render_kw={'placeholder': '留下你想说的话'}
                       )
    submit = SubmitField('留言')

上述表单实现了对于输入验证留言的验证
数据库配置

from datetime import datetime
from sqlalchemy import Column

from blog.models import db


class Message(db.Model):
    id = Column(db.Integer,primary_key=True)
    name = Column(db.String(20))
    body = Column(db.String(100))
    timestamp = Column(db.DateTime, default=datetime.now,index=True)

上述数据库实现了保存姓名 内容 和 时间
视图函数

from flask import flash, redirect, url_for, render_template

from blog.forms.messages import MessagesForm
from blog.models import db
from blog.models.messages import Message
from blog.view import web


@web.route('/', methods=['GET', 'POST'])
def blog():
    form = MessagesForm()
    messages = Message.query.order_by(Message.timestamp.desc()).all()
    # 排序方法
    if form.validate_on_submit():
        name = form.name.data
        body = form.body.data
        message = Message(name=name, body=body)
        db.session.add(message)
        db.commit()  # 提交会话
        flash('留言成功')
        return redirect(url_for('blog'))  # 留言成功后重定向刷新页面
    return render_template('hello.html', form=form, messages=messages)
											表单和数据库读取数据

html文件显示
非常丑陋的html文件如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>留言板</title>
</head>
<body>
<a>------------------------------------------------------</a>
{% for i in messages %}
    <p>
    {{ i.name }}<br>
    {{ i.body }}<br>
    {{ i.timestamp }}<br>
    <a>------------------------------------------------------</a>
    </p>
{% endfor %}
<form method="post">
    {{ form.csrf_token }}
{#    #这里为验证安全性#}
    {{ form.name.label }}<br>
    {{ form.name }}<br><br>
    {{ form.body.label }}<br>
    {{ form.body }}<br><br>
    {{ form.submit }}<br>
</form>
</body>
</html>

做出来的效果如下
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值