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
db.session.add(one_article)
db.session.commit()
return render_template('article_detail.html', one_article=one_article)
if __name__ == '__main__':
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>