Flask中制作博客首页的分类功能(一)

简介: 第一步:构建文章和分类数据模型(models.py)这里我们使用的关系型数据库。创建一个sql_test.py文件,复制以下内容。from flask import Flaskfrom flask_sqlalchemy import SQLAlc...

第一步:构建文章和分类数据模型(models.py)

这里我们使用的关系型数据库。创建一个sql_test.py文件,复制以下内容。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
from datetime import datetime
basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DETABASE_URI') or \
        'sqlite:///' + os.path.join(basedir, 'data-test.sqlite')
db = SQLAlchemy(app)

class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tag = db.Column(db.String(64))
    count =db.Column(db.integer, default=1)
    def __init__(self, tag):
        self.tag = tag

    def __repr__(self):
        return '<Category %r>' %self.tag
    
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64))
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)  # 时间戳
    
    def __init__(self, title, body):
        self.title = title
        self.body = body
        
    def __repr__(self):
        return '<Post.title %r>' %self.title       

在该文件目录下,打开python shell,引入这个py文件,并输入一些数据

from sql_test import db, Category, Post
db.create_all() #创建表
cat = Category('python')
post = Post('python','hello python')
db.session.add(cat)
db.session.add(post)
db.session.commit() #提交

建立两者的关系

使用post中的<b>外键</b>category_id连接两行

img_d0b50493b8b648b4065446e04cd8c75f.png
关系
class Post(db.Model):
....
    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    category = db.relationship('Category',backref=db.backref('posts', lazy='dynamic')) 

添加的category_id在Column中用db.Foreignkey定义为外键,表明这行的值为Category的id值

添加的category属性代表这个关系的面向对象视角。db,relationship()的第一个参数表明这个关系的另一端哪个模型(这里是category),backref参数在关系的另一端(category)添加一个posts属性,lazy指定如何加载相关记录,dynamic表明不加在记录,但提供加载记录的查询。

建立新的数据表并导传入数据

db.drop_all() # 数据模型变了,所以要先删掉原先的表格
db.create_all()
py = Category('Python')
p1 = Post('Hello Python!', 'Python is pretty cool', py)
p2 = Post('Hello again!', 'Python is pretty cool', py)
db.session.add_all([py,p1,p2])
db.session.commit()

>>>py.posts.all()
[<Post.title 'Hello Python!'>, <Post.title 'Hello again!'>]
img_02efd895847fa865ca3a0d295562aebf.png
一对多关系

视图函数(views.py)

@main.route('/')
def index():
 ...
category = Category.query.order_by(Category.count)[::-1]
    return render_template('index.html', categorys=category)

模板(index.html)

最重要的就是{% for category in categorys %} {{ category.count }},其他都是css样式

    <div class="col-md-3">

    <div class="share mrl the-font" style="background-color:#FFF;box-shadow:5px 5px 20px #CCC;width:260px;">
    <div style="padding:10px;">
            <div style="border-bottom:1px solid #DAD4D4;;padding:10px 10px;">
                <h5><span class="glyphicon glyphicon-leaf" aria-hidden="true"></span>CATEGORY</h5>
            </div>

            <ul>
                {% for category in categorys %}
                <li class="presentation" style="padding-top:0px;">
                    <a href="/category/{{ category.tag }}" >
                        <p><span style="font-size:15px;">> {{ category.tag|upper }}</span>
                            <span class="badge text-right" style="float:right">
                                {{ category.count }}
                            </span>
                            </p>
                    </a>
                </li>
                {% endfor %}
            </ul>

    </div>
    </div>
目录
相关文章
|
7月前
|
前端开发 关系型数据库 数据库
使用 Flask 连接数据库和用户登录功能进行数据库的CRUD
使用 Flask 连接数据库和用户登录功能进行数据库的CRUD
165 0
|
4月前
|
搜索推荐 数据可视化 数据挖掘
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
本文介绍了一个基于Python Flask框架的招聘数据分析推荐系统,该系统具备用户登录注册、数据库连接查询、首页推荐、职位与城市分析、公司性质分析、职位需求分析、用户信息管理以及数据可视化等功能,旨在提高求职者的就业效率和满意度,同时为企业提供人才匹配和招聘效果评估手段。
120 0
基于Python flask框架的招聘数据分析推荐系统,有数据推荐和可视化功能
|
1月前
|
程序员 API 数据库
Django/Flask深度揭秘:揭秘那些让程序员爱不释手的神奇功能!
在Web开发领域,Django与Flask凭借其独特魅力和强大功能深受程序员喜爱。Django作为全能型框架,以其ORM、模板引擎和丰富的内置功能著称;Flask则以轻量级、灵活的路由系统和强大的扩展生态见长。两者各具特色,为开发者提供了高效、灵活的开发工具。
40 4
|
4月前
|
机器学习/深度学习 算法 数据可视化
基于Python flask的豆瓣电影数据分析可视化系统,功能多,LSTM算法+注意力机制实现情感分析,准确率高达85%
本文介绍了一个基于Python Flask框架的豆瓣电影数据分析可视化系统,该系统集成了LSTM算法和注意力机制进行情感分析,准确率高达85%,提供了多样化的数据分析和情感识别功能,旨在帮助用户深入理解电影市场和观众喜好。
152 0
|
5月前
|
程序员 API 数据库
Django/Flask深度揭秘:揭秘那些让程序员爱不释手的神奇功能!
【7月更文挑战第14天】Django的ORM简化数据库操作,强大的模板引擎助力高效HTML渲染,内置功能丰富且可扩展。Flask以其灵活路由、强大扩展生态和高度可定制性著称,轻量而不失功能。两者各具魅力,满足不同Web开发需求。
41 0
|
7月前
|
存储 数据库连接 数据安全/隐私保护
使用Python和Flask构建一个简单的Web博客应用
使用Python和Flask构建一个简单的Web博客应用
68 0
|
7月前
|
JSON 安全 API
Flask-Login与Flask-RESTful:扩展你的应用功能
【4月更文挑战第16天】本文介绍了两个实用的Flask扩展——Flask-Login和Flask-RESTful。Flask-Login提供用户认证和会话管理,简化了登录、注销和保护路由的逻辑。而Flask-RESTful则助力构建RESTful API,支持多种HTTP方法和请求解析。通过这两个扩展,开发者能轻松增强Flask应用的功能性,实现安全的用户认证和高效的API交互。
|
7月前
|
存储 安全 JavaScript
使用Python的Flask框架开发验证码登录功能
使用Python的Flask框架开发验证码登录功能
162 0
|
7月前
|
存储 开发框架 人工智能
使用Python和Flask构建简单的博客后端
使用Python和Flask构建简单的博客后端
83 0
|
存储 JavaScript 前端开发
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能
使用 Flask 的g对象和 MySQL 实现用户登录和注销功能