在本章中,你学习了:如何使用表单来让用户添加新主题、添加新条目以及编辑既有条目;如何实现用户账户,让老用户能够登录和注销,并且使用Django提供的表单UserCreationForm 让用户创建新账户。
建立简单的用户身份验证和注册系统后,你使用装饰器@login_required 禁止未登录的用户访问特定页面。然后,你通过使用外键将数据关联到特定用户,还迁移了要求指定默认数据的数据库。
最后,你学习了如何修改视图函数,让用户只能看到属于自己的数据。你使用方法filter() 来获取合适的数据,并学习了如何将被请求数据的所有者同当前登录的用户进行比较。
该让哪些数据可随便访问,又该对哪些数据进行保护呢?这可能并非总是那么显而易见,但通过不断地练习就能掌握这种技能。我们在本章中就该如何保护用户数据所做的决策表明,与人合作开发项目是个不错的主意:在有人对项目进行检查的情况下,更容易发现其薄弱环节。
至此,我们创建了一个功能齐备的项目,它运行在本地计算机上。在本书的最后一章,我们将设置这个项目的样式,使其更漂亮,还将把它部署到一台服务器上,让任何人都可通过互联网注册并创建账户。
为设置样式,我们将使用Bootstrap库,这是一组工具,用于为Web应用程序设置样式,使其在任何现代设备上都看起来很专业,无论是大型的平板显示器还是智能手机。为此,我们将使用应用程序django-bootstrap4,这也让你能够练习使用其他Django开发人员开发的应用程序。
我们将把项目“学习笔记”部署到Heroku,这个网站让你能够将项目推送到其服务器,让任何有互联网连接的人都可以使用它。我们还将使用版本控制系统Git来跟踪对这个项目所做的修改。
之前,我们特意一直专注于项目“学习笔记”的功能,没有考虑样式设置问题。这是一种不错的开发方法,因为能正确运行的应用程序才是有用的。当然,应用程序能够正确运行后,外观就显得很重要了,因为漂亮的应用程序才能吸引用户。
我们将使用django-bootstrap4将Bootstrap集成到项目中。这个应用程序下载必要的Bootstrap文件,将其放到项目的合适位置,让你能够在项目的模板中使用样式设置指令。
新建一个名为“第三方应用程序”的片段,用于指定其他开发人员开发的应用程序,并在其中添加'bootstrap4' 。务必将这个片段放在“我的应用程序”和“Django默认添加的应用程序”之间。
Bootstrap是一个大型样式设置工具集,还提供了大量模板,可应用于项目以创建独特的总体风格。对Bootstrap初学者来说,这些模板比样式设置工具用起来容易得多。要查看Bootstrap提供的模板,可访问其官方网站,单击Examples并找到Navbars。我们将使用模板Navbars static,它提供了简单的顶部导航栏以及用于放置页面内容的容器。
对base.html所做的第一项修改是,在其中定义HTML头部,使得显示“学习笔记”的每个页面时,浏览器标题栏都显示该网站名。此外,还要添加一些在模板中使用Bootstrap所需的信息。请删除base.html的全部代码,并输入下面的代码:
在❶处,加载django-bootstrap4中的模板标签集。接下来,将这个文件声明为使用英语(见❸)编写的HTML文档(见❷)。HTML文件分为两个主要部分:头部 (head)和主体 (body)。在这个文件中,头部始于❹处。HTML文件的头部不包含任何内容,只是向浏览器提供正确显示页面所需的信息。❺处包含一个title 元素,在浏览器中打开网站“学习笔记”的页面时,浏览器的标题栏将显示该元素的内容。
在❻处,使用django-bootstrap4的一个自定义模板标签,让Django包含所有的Bootstrap样式文件。接下来的标签启用你可能在页面中使用的所有交互式行为,如可折叠的导航栏。❼处为结束标签 。