整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Flask框架实战教程:搭建个人博客

Flask框架实战教程:搭建个人博客

面是一个简单的Flask框架实战教程,用于指导如何搭建一个基本的个人博客系统。这个教程会覆盖一些基本的步骤和概念,包括安装Flask、创建项目结构、添加路由和模板等。

第一步:安装Flask

首先确保你的环境中已经安装了Python。然后在命令行中执行以下命令来安装Flask:

Bash

深色版本

1pip install flask

第二步:创建项目文件夹

创建一个新的文件夹来存放你的博客项目,并在其中创建一个app.py文件:

Bash

深色版本

1mkdir my_blog
2cd my_blog
3touch app.py

第三步:创建基本的Flask应用

打开app.py文件并输入以下代码:

Python

深色版本

1from flask import Flask, render_template
2
3app=Flask(__name__)
4
5@app.route('/')
6def home():
7    return render_template('home.html')
8
9if __name__=='__main__':
10    app.run(debug=True)

这里我们定义了一个基本的路由/,它返回渲染后的home.html页面。

第四步:创建模板文件夹

在项目根目录下创建一个名为templates的文件夹,并在其中创建一个home.html文件:

Bash

深色版本

1mkdir templates
2touch templates/home.html

然后编辑home.html文件,添加基本的HTML结构:

Html

深色版本

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>Home</title>
6</head>
7<body>
8    <h1>Welcome to My Blog!</h1>
9    <p>This is the homepage of my blog.</p>
10</body>
11</html>

第五步:运行应用

回到命令行,确保你在项目根目录下,然后运行以下命令启动Flask应用:

Bash

深色版本

1python app.py

浏览器中访问 http://127.0.0.1:5000/ 应该能看到你的主页。

第六步:添加更多页面

接下来,我们可以添加更多的页面,比如文章列表页面和文章详情页面。

文章列表页面

修改app.py文件,添加一个新的路由/posts:

Python

深色版本

1@app.route('/posts')
2def posts():
3    # 假设这里有从数据库获取的文章列表
4    posts=[
5        {'title': 'First Post', 'content': 'This is the content of the first post.'},
6        {'title': 'Second Post', 'content': 'This is the content of the second post.'}
7    ]
8    return render_template('posts.html', posts=posts)

在templates文件夹中创建posts.html文件:

Html

深色版本

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>Posts</title>
6</head>
7<body>
8    <h1>My Posts</h1>
9    {% for post in posts %}
10        <div>
11            <h2>{{ post.title }}</h2>
12            <p>{{ post.content }}</p>
13        </div>
14    {% endfor %}
15</body>
16</html>

文章详情页面

添加一个新的路由/post/<int:post_id>来显示单个文章的详细信息:

Python

深色版本

1@app.route('/post/<int:post_id>')
2def post(post_id):
3    # 假设这里有从数据库获取的文章详细信息
4    post={
5        'id': post_id,
6        'title': f'Post {post_id}',
7        'content': f'This is the content of post {post_id}.'
8    }
9    return render_template('post.html', post=post)

在templates文件夹中创建post.html文件:

Html

深色版本

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>{{ post.title }}</title>
6</head>
7<body>
8    <h1>{{ post.title }}</h1>
9    <p>{{ post.content }}</p>
10</body>
11</html>

现在你可以通过访问 http://127.0.0.1:5000/posts 和 http://127.0.0.1:5000/post/1 来查看文章列表和具体的文章详情。

第七步:扩展功能

随着项目的深入,你可以考虑添加用户认证、评论系统、上传图片等功能。这通常涉及到数据库的使用,你可以选择使用SQLAlchemy这样的ORM来操作数据库。

以上就是使用Flask框架搭建个人博客的基本步骤。你可以在此基础上继续扩展和完善你的博客系统。

文地址:Implement Dark Mode On Your Website.

原文作者:Matthew Marquise

译者 & 校正:HelloGitHub-小鱼干 & 卤蛋

暗黑模式是网站颇受欢迎的功能,用 HTML、CSS、JS 即可实现。但为什么你没有在你的个人网站实现暗黑功能呢?只要这简单的三个步骤,你就可以拥有暗黑模式。实操开始!(译:并不是所有的人都会 CSS,所以这是为什么我会翻译本文的原因,它真的超简单!)

本文目录

  • 暗黑模式 Step 1
  • 暗黑模式 Step 2
  • 暗黑模式 Step 3
  • 展示效果

暗黑模式 Step 1:

如果你还没有个人网站,先简单地创建一个 HTML 文件。

<!-- index.html -->

<!DOCTYPE html>
  <head>
    <title>Dark Mode Feature</title>
    <meta charset="UTF-8">
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>

  <body>
    ...
  <body>
</html>

有了网站之后,下面来实现 HTML 和 CSS。

暗黑模式 Step 2:

开始往 HTML 里添加我们想要的东西,先来添加链接 JS 和 CSS 文件的方法,就像 ADD CSS FILEADD JS FILE 注释下的那样:

<!-- index.html -->

<!DOCTYPE html>
  <head>
    <title>Dark Mode Feature</title>
    <meta charset="UTF-8">
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- ADD CSS FILE -->
    <link rel="stylesheet" href="main.css">

    <!-- ADD JS FILE -->
    <script src="main.js"></script>
  </head>

  <body>
    ...
  <body>
</html>

现在我们要开始创建 JS 和 CSS 文件了。你可以随意更改你的 CSS 文件,在这里,我添加了一些代码:

/* main.css */
body {
  background-color: white;
  color: black;
}

.dark-mode {
  background-color: black;
  color: white;
}

body 模块,我们设定默认网页背景色为白色、文本为黑色,而在 dark-mode 模块,我们将网页背景色变为黑色、文本则是白色。

好了,我们要创建 main.js 文件了,这是实现暗黑功能的关键;

//main.js

function darkmode() {
  const wasDarkmode = localStorage.getItem('darkmode') === 'true';
  localStorage.setItem('darkmode', !wasDarkmode);
  const element = document.body;
  element.classList.toggle('dark-mode', !wasDarkmode);
}

function onload() {
  document.body.classList.toggle('dark-mode', localStorage.getItem('darkmode') === 'true');
}

成功创建 CSS 和 JS 文件后,你现在只用做最后一件事。

暗黑模式 Step 3:

经过上面 2 个步骤,你可能认为暗黑模式已经实现,但其实不是。来问自己一个问题:如果我的网站有多个页面要咋整?如何在每个页面启用黑暗模式而不是默认的白色背景?答案比你想的要简单得多。在每个页面的初始 body tag 中添加:

onload="onload()"

就这么简单,希望它对你有用,谢谢阅读本文^^

展示效果

最后,欢迎优秀的你加入 HelloGitHub 的「译文亦舞」系列,让你的才华舞动起来!把优秀的文章分享给更多的人。要求:

  • 平时浏览 GitHub、开源、编程、程序员等英文资讯和文章
  • 想把自己阅读到优秀的英文文章分享给更多的人
  • 翻译准确但不是直翻或机翻
  • 保证每月至少翻译或校正 1 篇高质量文章
  • 了解 Markdown 和排版规则
  • 联系我

色模式最近风头正热,大家都用上了吗?本文作者从产品经理的角度出发,对人们为什么喜欢深色模式、深色模式适配现状以及深色模式的搭配思路进行了分析,与大家分享。

在 Android Q 之后,苹果也在 iOS13 支持了深色模式,深色模式成了2019下半年的热门话题,不少产品已经完成了对深色模式的适配,淘宝、微信也先后开始内测,「变黑」似乎已经成为趋势。

而在适配深色模式之前,设计师需要深入了解它的特性,衡量适配深色模式带来的价值,以及规划合适的策略,避免陷入「为黑而黑」的泥潭。

一、为什么人们会喜欢「深色模式/dark mode」?

1. 深色系界面弱化背景,浏览内容更专注

影片放映时会关掉所有灯光,只有屏幕亮起吸引观众的注意力,同样的原理下,当产品界面是深色背景时,页面元素优先级更清晰,用户更容易注意到关键内容。而且相比浅色为主的界面,深色界面对眼睛的视觉压力更小。

注:至于它的「护眼」作用还尚未明确,长时间盯着屏幕造成的视觉疲劳依然不可避免。

2. 新鲜感

看了太久千篇一律的「白底黑字」,深色模式让用户多了一种选择。人人喜欢新鲜的样式,哪怕只是短暂的热情尝试,都会增加用户对产品的新鲜感,并且不可否认的是,黑色更容易让人感觉到酷炫新鲜。

3. 省电- OLED 屏幕显示深色能耗更低

OLED 屏幕中每个像素都是自主发光,在显示深色元素时,消耗的电量更少,而在显示纯黑色时,像素点可以彻底关闭。打个不完全严谨的比方,手机屏幕就像是排列了几万个小灯泡的大灯板,OLED 屏幕显示黑色时会真的把那块区域的灯泡关掉,自然会省电。

二、深色模式不等同于夜间模式

很多产品已经存在夜间模式,开启夜间模式后界面同样会转向暗色,而突然被讨论的「深色模式」和「夜间模式」有什么区别?

对于用户而言显然没有必要分清楚夜间模式和深色模式的差别,在外观上,它们真的很像。但是以设计师的角度来说,只有真正区分它们之间的差别和应用场景,才能提供给用户一套逻辑清晰的选择方案,让用户更方便快捷的选择自己想要的模式。

开启夜间模式前后对比

浅色/深色模式下的界面对比

通过这两张对比图,可以明显的感觉到夜间模式与深色模式下,界面元素的对比、层级表现都有所区别。夜间模式的设计目的,是让用户在夜间使用手机时,屏幕显示更柔和,调整色温、降低饱和度,而在白天开启夜间模式很难看清显示内容,并不适合在白天使用。

显然,深色模式不是夜间模式,用户可以在任何时间任何环境下使用它,需要维持和浅色模式同样的产品特性,可以和设备的夜览模式同时开启。

三、深色模式适配现状

用户将系统主题设置为深色后,自然就会期望所有的 app 都变成深色,深色模式逐渐会成为产品标配的功能。已经有越来越多的产品用各种方式对系统的深色模式进行适配。主要分为以下三种类型:

1. app 自动跟随系统主题切换模式

如果用户的手机系统不支持深色模式,产品不会切换到深色模式。

代表产品有 微信读书、豆瓣、懒饭、Instagram、爱奇艺

2. 原有夜间模式与深色模式进行捆绑,让用户自行选择是否配合系统主题切换

在不支持深色主题的系统内用户可以通过开启夜间模式,使产品主题变为深色。严格来说,这并不是真正的深色模式,而出于不同的决策模型,产品团队会做出最适合自己的选择。

代表产品:QQ、Twitter

3. 原有产品没有夜间模式,正在内测跟随系统切换主题的深色模式

代表产品:微信 淘宝

四、深色模式的适配不同思路

iOS & Android 两套设计语言的 Dark Mode 策略除了在基础色彩体系的数值有些差距外,更明显的是在 Accent color 的不同处理方式。Android Q 则强调保障清晰观看体验的前提下,要具备更多的灵活性,比如在原色彩上面加 40% 的白色透明遮罩,以增强在深色背景上的清晰对比度,缺点可能会让原色彩在感官上发生较大的偏差。

——引自:钉钉 Dark Mode 设计

1. 语义化颜色

在 iOS 设计语言规范下,产品支持深色模式就必须管理两套完整的颜色方案,确保它们之间始终保持同步,这就要求设计团队以更系统的方式来管理颜色体系。为此,苹果引入了“语义化颜色”的概念。

注:语义化颜色是通过「用途」来对元素进行定义描述,而不是具体的色值。「用途」定义下的颜色是动态性,脱离于具体的表现样式而独立存在。比如,“背景色”,在深色模式中指代黑色,而在浅色模式中指代白色,这样就可以让颜色灵活的适应浅色与深色模式切换。

具体应用方法已有很多资料分享,本文不做扩展。

2. 统一规律变化色彩梯度

Android 适配方案简单粗暴,对于颜色可参考梯梯度渐变模型规律配色,页面背景根据层级叠加不同透明度的白色即可。但是完全执行就容易导致产品在深色模式下产生风格偏移,出现不符合品牌设计语言的情况。

3. 智能语义化

在iOS 适配策略的基础上,淘宝团队在分享中提出了「智能语义化」方案,使适配成本大幅降低。方案思路是:设计师根据不同UI元素的特性先期制定颜色语义化规则,技术在框架层面通过“颜色自动反转”技术实现颜色反转。

然而除去基本颜色,大量的图标、插图,动效等等需要一一调整兼容,完美适配深色模式需要多方配合持续维护,而后期的功能开发也需要同时兼顾两种模式,对于自定义元素较多、业务组成复杂的 APP适配难度可想而知。

最后

看完本文后,你可以了解深色模式受到追捧的原因,区分深色模式与夜间模式的不同,了解到适配深色模式的多种策略和面临的挑战,深入思考,当前产品是否真的需要适配深色模式。最后,希望能够帮你找到真正适合自己产品的适配策略。

#参考资料#

  • WCGA2.0 标准:Web Content Accessibility Guidelines (WCAG) Overview | Web Accessibility Initiative (WAI) | W3C
  • iOS HIG 中 Dark Mode 设计指导的章节https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/dark-mode/
  • Material Design 中 Dark Mode 设计指导的章节:https://material.io/design/color/dark-theme.html#properties
  • 一篇吃透 Dark Mode ,搞定“暗黑/深色”适配
  • 淘宝设计团队-我们把淘宝黑了

作者:bubblegun;公众号:@泡枪指北

本文由 @bubblegun 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议