本章我们将为程序添加用户认证功能。这将把用户分成两类:管理员和访客。管理员可以通过用户名和密码登录程序,并执行与数据相关的操作;而访客只能浏览页面。在开始之前,我们先来了解如何将密码安全地存储到数据库中。安全储存密码把密码明文存储在数据库中是极其危险的,假如攻击者窃取了你的数据库,那么用户的账号和密码就会被直接泄露。更保险的方式是对每个密码进行计算生成独一无二的密码散列值,这样即使攻击者拿到了散列值,也几乎无法逆向获取到密码。

- 阅读剩余部分 -

在HTML页面中,我们可以使用表单来获取用户输入的数据。下面是一个典型的表单示例:<form method="post"> <label for="name">名字</label> <input type="text" name="name" id="name"><br> <label for="occupation">职业</label> <input type="text" name="occupation" id="occupation"><br> <input type="submit" name="submit" value="登录"> </form>在这段HTML代码中,我们使用<form>标签来定义一个表单,并通过method属性将提交方法设置为POST。<input>元素用于创建表单字段,其中type属性指定为"text"表示创建文本输入框,name属性定义了字段的名称,id属性指定了对应的标识符,用于与<label>元素进行关联。最后的<input>元素类型设置为"submit"表示创建提交按钮。

- 阅读剩余部分 -

在这个教程中,我们选择了SQLite作为数据库管理系统(DBMS)。SQLite是一种关系型数据库管理系统(RDBMS),它基于文件,不需要单独启动数据库服务器。SQLite适合在开发时使用,或者在数据库操作简单、访问量低的程序中使用。SQLite具有以下优点:简单易用:SQLite的设置和配置非常简单,无需复杂的服务器安装和配置过程。轻量级:SQLite数据库以单个文件的形式存储在磁盘上,占用空间小且资源消耗较少。无服务器:与其他关系型数据库管理系统相比,SQLite不需要独立运行的数据库服务器,可以直接与应用程序集成。跨平台:SQLite可在多个操作系统上运行,包括Windows、Mac和Linux等。

- 阅读剩余部分 -

静态文件(static files)是指那些不需要动态生成的文件,例如图片、CSS文件和JavaScript脚本等。在Flask中,我们需要创建一个名为static的文件夹来存放静态文件。这个文件夹应该与程序模块和templates文件夹处于同一目录层级。因此,在项目的根目录下创建static文件夹:$ mkdir static

- 阅读剩余部分 -

在一般的 Web 程序中,访问一个地址通常会返回一个包含各种信息的 HTML 页面。由于我们的程序是动态的,页面中的某些信息需要根据不同的情况进行调整,例如对登录和未登录用户显示不同的信息,因此页面需要在用户访问时根据程序逻辑动态生成。我们将包含变量和运算逻辑的 HTML 或其他格式的文本称为模板,而执行这些变量替换和逻辑计算的过程称为渲染。在本章中,我们将学习如何使用模板渲染引擎——Jinja2。根据默认设置,Flask 会从程序实例所在模块的同级目录中的 templates 文件夹中寻找模板。由于我们的程序目前存储在项目根目录的 app.py 文件中,所以我们需要在项目根目录创建该文件夹:

- 阅读剩余部分 -

在Flask中编写主页在这一章中,我们的主要任务是为我们的程序编写一个简单的主页。主页的URL通常是根地址,即/。当用户访问根地址时,我们需要返回一行欢迎文字。下面是编写这个任务所需的代码:

- 阅读剩余部分 -

安装编辑器和浏览器选择编辑器对于编辑器,可以根据个人喜好进行选择。有一些功能丰富的IDE(集成开发环境),比如PyCharm,适合于开发大型项目。另外,也可以选择一些相对轻量级的编辑器,比如VS Code或Sublime Text,它们提供了丰富的插件和扩展性。推荐浏览器在使用Flask时,推荐使用Firefox或Chrome等主流浏览器。它们都提供了良好的开发者工具和对Web标准的支持。

- 阅读剩余部分 -

什么是C?C是一种结构化或过程化的面向过程编程语言,它与机器无关,在各种应用程序中广泛使用。C是一种基本的编程语言,可以用于开发从操作系统(如Windows)到复杂程序(如Oracle数据库、Git、Python解释器等)的应用。C编程语言可以称为上帝的编程语言,因为它为其他编程语言打下了基础。如果我们了解C语言,那么我们可以很容易地学习其他编程语言。C语言由伟大的计算机科学家Dennis Ritchie在贝尔实验室开发。它包含一些使其与其他编程语言独特的附加功能。

- 阅读剩余部分 -

C++ 的输入/输出操作使用流(stream)的概念。流是字节序列或数据流,它可以提高性能。如果字节从主内存流向设备,例如打印机、显示屏或网络连接等,这被称为输出操作。如果字节从设备,例如打印机、显示屏或网络连接等流向主内存,这被称为输入操作。

- 阅读剩余部分 -