Flask入门教程实例:搭建一个静态博客

yizhihongxing

下面是针对“Flask入门教程实例:搭建一个静态博客”的完整攻略。

1. 确保系统已经具备Python环境

在开始构建一个Flask应用程序之前,我们需要确保系统已经安装并配置好了Python环境。Python的版本推荐使用最新的稳定版本,如Python3.8或Python3.9。如果您还没有安装Python,可以在Python官网下载对应平台的安装包进行安装。

2. 安装Flask并创建虚拟环境

安装Flask是构建一个Flask应用的第一步,并且创建虚拟环境可以避免全局安装Flask带来的冲突和问题。具体步骤如下:

  1. 打开终端或命令行界面,并进入项目根目录
  2. 在终端或命令行中使用命令pip install virtualenv来安装虚拟环境工具
  3. 使用命令virtualenv venv来创建虚拟环境,并将虚拟环境目录命名为venv
  4. 在终端或命令行中使用命令source venv/bin/activate来进入虚拟环境

3. 编写Flask应用程序

在进入虚拟环境后,我们需要通过编写Flask应用程序来实现我们的目标。下面是一个简单的Flask应用程序示例:

# app.py
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello, Flask!'

该应用程序导入了Flask并创建了一个Flask实例,并在根目录/下定义了一个视图函数index。该视图函数返回一个简单的字符串“Hello, Flask!”。通过将该视图函数与根目录路径/关联起来,我们创建了一个简单的Web应用程序。

4. 运行Flask应用程序

在编写完Flask应用程序后,我们需要运行该应用程序来查看其效果。在终端或命令行中使用命令export FLASK_APP=app.py将刚才编写的Flask应用程序文件app.py保存的位置告诉Flask。然后使用命令flask run来运行该应用程序。这样我们就可以在浏览器中访问http://localhost:5000/,并看到“Hello, Flask!”这个字符串了。

5. 创建一个静态博客

在了解了Flask的基本用法后,我们可以开始自己写一个静态博客了。下面是实现静态博客的步骤:

5.1. 安装依赖库

首先需要安装一些依赖库,包括Flask、flask-markdown、Pygments(需要用到代码高亮功能)、Jinja2(渲染html)等等。运行以下命令行:

pip install Flask flask-markdown Pygments Jinja2

5.2. 创建博客文件与模板

在博客根目录下创建articles文件夹,用于存放Markdown格式的博客文章。每个博客文章需要在文件名前添加时间戳与slug,例如2022-09-25-hello-world.md。这里的时间戳可以使用Python中的datetime模块实现。

然后创建基本模板文件templates/base.html,并在此基础上衍生出templates/index.htmltemplates/article.html两个子模板。

5.3. 实现博客路由与视图函数

在Flask应用程序中添加路由和视图函数,用于显示“首页”和“文章详情页”。其中,“首页”需要获取articles文件夹中的所有Markdown文件,并解析成HTML格式的文本,并将结果渲染到模板中。而“文章详情页”需要获取特定的Markdown文件,解析成HTML文本,并将结果渲染到模板中。

使用以下代码片段实现上述路由:

# app.py
import os
from datetime import datetime
from flask import Flask, render_template
from flask.ext.markdown import Markdown
from pygments.formatters import html

app = Flask(__name__)
app.config['MARKDOWN_EXTENSION_CONFIGS'] = {
    'codehilite': {'linenums': False},
    'nl2br': {},
}
Markdown(app, extensions=['codehilite', 'nl2br'])

def get_articles():
    path = os.path.join(os.getcwd(), 'articles')
    articles = []
    for filename in os.listdir(path):
        if not filename.endswith('.md'):
            continue
        filepath = os.path.join(path, filename)
        with open(filepath, 'r', encoding='utf-8') as f:
            mtime = datetime.strptime(
                filename.split('-', 1)[0], '%Y-%m-%d')
            slug = f.readline().strip()[2:]
            title = f.readline().strip()[2:]
            content = f.read()
            articles.append((mtime, slug, title, content))
    articles.sort(reverse=True)
    return articles

@app.route('/')
def index():
    articles = get_articles()
    return render_template('index.html', articles=articles)

@app.route('/<slug>/')
def detail(slug):
    for mtime, s, title, content in get_articles():
        if s == slug:
            return render_template(
                'article.html', title=title,
                content=content, mtime=mtime)
    return 'article not found', 404

5.4. 运行博客

按照第4步中的方法运行Flask应用程序即可。在浏览器中访问http://localhost:5000/即可查看博客的首页。点击文章链接,即可查看文章详情页。

到此,我们就完成了一个简单的静态博客的搭建。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask入门教程实例:搭建一个静态博客 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Flask框架之数据交互的实现

    Flask是一款轻巧灵活的Python Web框架,通过Flask框架搭建后端服务可以快速地进行前后端的数据交互。本文将详细讲解Flask框架中数据交互的实现完整攻略,包括使用Flask框架通过GET和POST方式实现前后端数据传递的两个具体示例。 一、GET方式实现数据交互 GET方式是HTTP请求中最常见的一种方式,我们一般通过在URL中进行上传数据来实…

    Flask 2023年5月15日
    00
  • 详解Flask Session 会话的使用方法

    Flask Session 是 Flask 框架中处理会话的标准机制。它是一种服务器端状态管理机制,可用于跟踪用户的活动并在不同请求之间保留数据。 在本篇文章中,我们将介绍 Flask Session 的核心概念、使用方法和必要知识点。我们将通过一个实例程序进行演示,代码示例已经包含在下文中。 安装 Flask-Session 扩展 安装 Flask-Ses…

    Flask 2023年3月13日
    00
  • 详解vue-admin和后端(flask)分离结合的例子

    下面我将为您详细讲解如何使用flask和vue-admin进行前后端分离,并给出两个示例说明。 背景 前端开发中,随着前端框架的不断推陈出新,后端的开发出现了一种趋势,就是将前端和后端进行分离。 准备工作 在使用flask和vue-admin分离前,有几个准备工作: 安装flask 安装vue-cli 安装vue-admin 具体安装方法这里不再赘述,可以在…

    Flask 2023年5月16日
    00
  • 使用Flask和Django中解决跨域请求问题

    跨域请求问题的解决方法主要有两种:一种是在服务端进行设置,另一种是在客户端进行设置。下面分别介绍Flask和Django中如何进行跨域请求的设置。 使用Flask中解决跨域请求问题 在Flask中,可以使用Flask-CORS(Cross-Origin Resource Sharing)扩展来解决跨域请求问题。以下是详细步骤: 安装Flask-CORS扩展 …

    Flask 2023年5月15日
    00
  • Python3创建Django项目的几种方法(3种)

    下面给你详细讲解Python3创建Django项目的几种方法。 方法一:使用django-admin.py 安装 Django,使用 pip install Django 命令进行安装。 在终端中输入 django-admin.py startproject projectname,其中 projectname 为你要创建的项目名称。 在终端中输入 cd p…

    Flask 2023年5月16日
    00
  • Python SqlAlchemy动态添加数据表字段实例解析

    下面我将详细讲解“Python SqlAlchemy动态添加数据表字段实例解析”的完整攻略,包含两条示例说明。 1. SqlAlchemy动态添加数据表字段的实现 SqlAlchemy是Python的一个ORM(Object Relational Mapping)框架,用于操作关系型数据库。在SqlAlchemy中实现动态添加数据表字段的方法如下: (1)定…

    Flask 2023年5月16日
    00
  • .net任务调度框架FluentScheduler简介

    .NET任务调度框架FluentScheduler简介 简介 FluentScheduler是一款基于.NET的任务调度框架,可以提供简单易用的API,支持多种类型的任务,可以满足各种复杂的任务调度需求。使用FluentScheduler可以省去很多手动编写任务调度代码的工作,提高了编码效率。 安装 使用NuGet包管理器或在Visual Studio的包管…

    Flask 2023年5月16日
    00
  • python中使用PIL制作并验证图片验证码

    Python中使用PIL(Python Imaging Library)制作并验证图片验证码可以用于验证用户的身份,增加系统的安全性。本文将详细讲解制作并验证图片验证码的完整攻略,包括以下内容: 安装PIL库 制作图片验证码 校验图片验证码 1. 安装PIL库 在Python中使用PIL库需要先安装PIL库。可以使用pip命令进行安装: pip instal…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部