flask消息閃現

對於一個網站來說用戶體驗是非常重要的.在flask裏面消息閃現可以很大程度地提高用戶體驗.

最近在做一個flask的python web項目,之中就用到了flask消息閃現,下面介紹一下這個知識點.

首先詳情見flask官方文檔消息閃現這一節,http://docs.jinkan.org/docs/flask/patterns/flashing.html

官方文檔我就不說了,先看看我的項目的消息閃現

tag_add.html

{% extends "admin/admin.html" %}

{% block content %}
    <section class="content-header">
        <h1>電影網站後臺管理系統</h1>
        <ol class="breadcrumb">
            <li><a href="#"><i class="fa fa-dashboard"></i> 標籤管理</a></li>
            <li class="active">添加標籤</li>
        </ol>
    </section>
    <section class="content" id="showcontent">
        <div class="row">
            <div class="col-md-12">
                <div class="box box-primary">
                    <div class="box-header with-border">
                        <h3 class="box-title">添加標籤</h3>
                    </div>
                    <form role="form" method="POST">
                        <div class="box-body">
                            {% for msg in get_flashed_messages(category_filter=["ok"]) %}
                                <div class="alert alert-success alert-dismissible">
                                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×
                                    </button>
                                    <h4><i class="icon fa fa-check"></i> 操作成功! </h4>
                                    {{ msg }}
                                </div>
                            {% endfor %}
                            {% for msg in get_flashed_messages(category_filter=["error"]) %}
                                <div class="alert alert-danger alert-dismissible">
                                    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×
                                    </button>
                                    <h4><i class="icon fa fa-ban"></i> 操作失敗!</h4>
                                    {{ msg }}
                                </div>
                            {% endfor %}
                            <div class="form-group">
                                <label for="input_name">{{ form.name.label }}</label>
                                {{ form.name }}
                                {% for err in form.name.errors %}
                                    <div class="col-md-12">
                                        <font style="color:red">{{ err }}</font>
                                    </div>
                                {% endfor %}
                            </div>
                        </div>
                        <div class="box-footer">
                            {{ form.csrf_token }}
                            {{ form.submit }}
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>
{% endblock %}

{% block js %}
    <script>
        $(document).ready(function () {
            $("#g-2").addClass("active");
            $("#g-2-1").addClass("active");
        });
    </script>
{% endblock %}

views.py 

# coding=utf-8
from . import admin
from flask import render_template, redirect, url_for, flash, session, request
from app.admin.forms import LoginForm,TagForm
from app.models import Admin,Tag
from functools import wraps
from app import db

# 裝飾器,訪問控制
def admin_login_req(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        if "admin" not in session:
            return redirect(url_for("admin.login"))
        return f(*args, **kwargs)

    return decorated_function
# 標籤添加
@admin.route("/tag/add/",methods=["GET","POST"])
@admin_login_req
def tag_add():
    form = TagForm()
    if form.validate_on_submit():
        data = form.data
        tag = Tag.query.filter_by(name=data["name"]).count()
        if tag == 1:
            # 消息閃現
            flash("標籤名稱已經存在! ","error")
            return redirect(url_for('admin.tag_add'))
        tag = Tag(
            name = data["name"]
        )
        db.session.add(tag)
        db.session.commit()
        flash("添加標籤成功! ","ok")
        redirect(url_for('admin.tag_add'))
    return render_template("admin/tag_add.html",form=form)

 forms.py

# coding=utf-8
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, ValidationError
from app.models import Admin

class TagForm(FlaskForm):
    name = StringField(
        label="名稱",
        validators=[
            DataRequired("請輸入標籤! ")
        ],
        description="標籤",
        render_kw={
            "class": "form-control",
            "id": "input_name",
            "placeholder": "請輸入標籤名稱!"
        }
    )
    submit = SubmitField(
        '添加',
        render_kw={
            "class": "btn btn-primary",
        }
    )

 models.py

# coding=utf-8
from datetime import datetime
from app import db

# 標籤
class Tag(db.Model):
    __tablename__ = "tag"
    id = db.Column(db.Integer, primary_key=True)  # 編號
    name = db.Column(db.String(100), unique=True)  # 標題
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加時間
    # movies = db.relationship("Movie", backref='tag')  # 電影外鍵關聯

    def __repr__(self):
        return "<Tag %r>" % self.name

__init__.py 

 

# coding=utf-8
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
import pymysql

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:19981028@localhost:3306/movie?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SECRET_KEY'] = '2e798784ab164b89a3bbd69683332e18'
app.debug = True
db = SQLAlchemy(app)  # 實例化

from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint

app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix="/admin")


# 404出錯頁面
@app.errorhandler(404)
def page_not_found(error):
    return render_template("home/404.html"), 404

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章