Flask简单实例-4

在这里插入图片描述

# py

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_object('setting')

db = SQLAlchemy(app=app)


''' 创建表 '''
class Article(db.Model):
    id = db.Column(db.Integer, primary_key=True, comment='文章ID')
    title = db.Column(db.String(30), comment='文章标题')
    num = db.Column(db.Integer, comment='文章浏览量')


# 首页【所有文章】
@app.route('/')
def index():
    all_article = Article.query.order_by(Article.num.desc()).all()
    return render_template('all_article.html', all_article=all_article)


# 添加文章
@app.route('/add_article', methods=['GET','POST'])
def add_article():
    if request.method == 'POST':
        one_title = request.form.get('title')
        num = request.form.get('num')
        title = Article(title=one_title, num=num)
        db.session.add(title)
        db.session.commit()
    return render_template('add_article.html')


# 修改文章
@app.route('/alter_article', methods=['GET','POST'])
def alter_article():
    article_id = request.args.get('article_id')
    one_article = Article.query.get(article_id)
    if request.method == 'POST':
        new_article = request.form.get('title')
        one_article.title = new_article
        db.session.add(one_article)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('alter_article.html', one_article=one_article)


# 文章详情页
@app.route('/article_detail')
def article_detail():
    article_id = request.args.get('article_id')
    one_article = Article.query.get(article_id)
    one_article.num += 1                # 实现浏览一次页面,浏览次数加1i
    db.session.add(one_article)
    db.session.commit()
    return render_template('article_detail.html', one_article=one_article)


if __name__ == '__main__':

    # db.drop_all()
    # db.create_all()

    app.run()
# setting

DEBUG = True                # 开启调试模式
SECRET_KEY = "962464"       # 随机输入字符串
# SQLALCHEMY_DATABASE_URI = 链接的数据库类型+使用的驱动://用户名:密码@数据库地址:端口/数据库名称?数据库编码
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:mysql@127.0.0.1:3306/exam4?charset=utf8' # 连接数据库
# SQLALCHEMY_ECHO = True      # 在控制面板显示
SQLALCHEMY_TRACK_MODIFICATIONS = False
{# base.html #}

{% block top %}
    <a href="{{ url_for('index') }}">首页【所有文章】</a>
    <a href="{{ url_for('add_article') }}">添加文章</a>
{% endblock top %}

{% block content %}

{% endblock content %}
{# all_article.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>所有文章</title>
</head>
<body>
    {% extends 'base.html' %}

    {% block content %}
        <table border="1" cellspacing="0">
            <tr>
                <td>文章ID</td>
                <td>标题</td>
                <td>浏览量</td>
                <td>操作</td>
            </tr>
            {% for i in all_article %}
                <tr>
                    <td>{{ i.id }}</td>
                    <td>{{ i.title }}</td>
                    <td>{{ i.num }}</td>
                    <td>
                        <a href="{{ url_for('article_detail', article_id = i.id) }}">详情页</a> |
                        <a href="{{ url_for('alter_article', article_id = i.id) }}">修改</a> |
                    </td>
                </tr>
            {% endfor %}
        </table>
    {% endblock content %}
</body>
</html>
{# add_article.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加文章</title>
</head>
<body>
    {% extends 'base.html' %}

    {% block content %}
        <form action="" method="post">
            添加文章:<input type="text" name="title" value=""><br>
            浏览量:<input type="text" name="num" value=""><br>
            <input type="submit" value="确认添加">
        </form>
    {% endblock content %}
</body>
</html>
{# alter_article.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改文章</title>
</head>
<body>
    {% extends 'base.html' %}

    {% block content %}
        <form action="" method="post">
            修改文章:<input type="text" name="title" value="" placeholder="{{ one_article.title }}">
            <input type="submit" value="确认修改">
        </form>
    {% endblock content %}
</body>
</html>
{# article_detail.html #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文章详情页</title>
</head>
<body>
    {% extends 'base.html' %}

    {% block content %}
        <h1>文章详情页</h1>
        ID:{{ one_article.id }}<br>
        标题:{{ one_article.title }}<br>
        浏览量:{{ one_article.num }}<br>
    {% endblock content %}
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值