暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python系列21-Web应用程序-设置样式

原创 只是甲 2021-04-13
261

Table of Contents

一.设置样式

当前,项目“学习笔记”功能已齐备,但未设置样式,也只是在本地计算机上运行。在本博客中,我们将以简单而专业的方式设置这个项目的样式,再将其部署到一台服务器上,让世界上的任何人都能够建立账户。

为设置样式,我们将使用Bootstrap库,这是一组工具,用于为Web应用程序设置样式,使其在任何现代设备上都看起来很专业,无论是大型的平板显示器还是智能手机。为此,我们将使用应用程序django-bootstrap3,这也让你能够练习使用其他Django开发人员开发的应用程序。

我们将把项目“学习笔记”部署到Heroku,这个网站让你能够将项目推送到其服务器,让任何有网络连接的人都可使用它。我们还将使用版本控制系统Git来跟踪对这个项目所做的修改。

完成项目“学习笔记”后,你将能够开发简单的Web应用程序,让它们看起来很漂亮,再将它们部署到服务器。你还能够利用更高级的学习资源来提高技能。

1.1 设置项目“学习笔记”的样式

我们一直专注于项目“学习笔记”的功能,而没有考虑样式设置的问题,这是有意为之的。这是一种不错的开发方法,因为能正确运行的应用程序才是有用的。当然,应用程序能够正确运行后,外观就显得很重要了,因为漂亮的应用程序才能吸引用户使用它。

在本博客中,我将简要地介绍应用程序django-bootstrap3,并演示如何将其继承到项目中,为部署项目做好准备。

1.1.1 应用程序django-bootstrap3

我们将使用django-bootstrap3来将Bootstrap继承到项目中。这个应用程序下载必要的Bootstrap文件,将它们放到项目的合适位置,让你能够在项目的模板中使用样式设置指令。

为安装django-bootstrap3,在活动的虚拟环境中执行如下命令:

(ll_env) E:\python\my_learning_log>pip install django-bootstrap3
Collecting django-bootstrap3
  Downloading https://files.pythonhosted.org/packages/ed/84/892d3cc98fc597b7a7dec7de5afa434a22c4e0acfb25dd71ea0f4eb67ec5/django_bootstrap3-14.2.0-py3-none-any.w
hl
Collecting importlib-metadata<2.0.0,>=1.5.0; python_version < "3.8" (from django-bootstrap3)
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/8e/58/cdea07eb51fc2b906db0968a94700866fc46249bdc75cac23f9d13168929/importlib_metadata-1.7.0-py2.py3-none-a
ny.whl
Requirement already satisfied: django<4.0,>=2.2 in e:\python\my_learning_log\ll_env\lib\site-packages (from django-bootstrap3)
Collecting zipp>=0.5 (from importlib-metadata<2.0.0,>=1.5.0; python_version < "3.8"->django-bootstrap3)
  Cache entry deserialization failed, entry ignored
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/0f/8c/715c54e9e34c0c4820f616a913a7de3337d0cd79074dd1bed4dd840f16ae/zipp-3.4.1-py3-none-any.whl
Requirement already satisfied: sqlparse>=0.2.2 in e:\python\my_learning_log\ll_env\lib\site-packages (from django<4.0,>=2.2->django-bootstrap3)
Requirement already satisfied: asgiref<4,>=3.2.10 in e:\python\my_learning_log\ll_env\lib\site-packages (from django<4.0,>=2.2->django-bootstrap3)
Requirement already satisfied: pytz in e:\python\my_learning_log\ll_env\lib\site-packages (from django<4.0,>=2.2->django-bootstrap3)
Installing collected packages: zipp, importlib-metadata, django-bootstrap3
Successfully installed django-bootstrap3-14.2.0 importlib-metadata-1.7.0 zipp-3.4.1

(ll_env) E:\python\my_learning_log>

接下来,需要在settings.py的INSTALLED_APPS 中添加如下代码,在项目中包含应用程序django-boostrap3:
settings.py

--snip-- INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 第三方应用程序 'bootstrap3', # 我的应用程序 'learning_logs', 'users', ] --snip--

新建一个用于指定其他开发人员开发的应用程序的片段,将其命名为“第三方应用程序”,并在其中添加’bootstrap3’ 。大多数应用程序都需要包含在INSTALLED_APPS 中,为确定这一点,请阅读要使用的应用程序的设置说明。

我们需要让django-bootstrap3包含jQuery,这是一个JavaScript库,让你能够使用Bootstrap模板提供的一些交互式元素。请在settings.py的末尾添加如下代码:

# 我的设置 LOGIN_URL = '/users/login/' # django-bootstrap3的设置 BOOTSTRAP3 = { 'include_jquery': True, }

这些代码让你无需手工下载jQuery并将其放到正确的地方。

1.1.2 使用Bootstrap来设置项目“学习笔记”的样式

Bootstrap基本上就是一个大型的样式设置工具集,它还提供了大量的模板,你可将它们应用于项目以创建独特的总体风格。对Bootstrap初学者来说,这些模板比各个样式设置工具使用起来要容易得多。要查看Bootstrap提供的模板,可访问http://getbootstrap.com/ ,单击Getting Started,再向下滚动到Examples部分,并找到Navbars in action。我们将使用模板Static top navbar,它提供了简单的顶部导航条、页面标题和用于放置页面内容的容器。

知道要获得的效果后,接下来的内容理解起来将更容易

1.1.3 修改base.html

我们需要修改模板base.html,以使用前述Bootstrap模板。我们把新的base.html分成几个部分进行介绍。

1. 定义HTML头部
对base.html所做的第一项修改是,在这个文件中定义HTML头部,使得显示“学习笔记”的每个页面时,浏览器标题栏都显示这个网站的名称。我们还将添加一些在模板中使用Bootstrap所需的信息。删除base.html的全部代码,并输入下面的代码:
base.html

{% load bootstrap3 %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1" <title>Learning Log</title> {% bootstrap_css %} {% bootstrap_javascript %} </head> </html>

我们加载了django-bootstrap3中的模板标签集。接下来,我们将这个文件声明为使用英语编写的HTML文档。HTML文件分为两个主要部分:头部(head)和主体 (body);HTML文件的头部不包含任何内容:它只是将正确显示页面所需的信息告诉浏览器。我们包含了一个title元素,在浏览器中打开网站“学习笔记”的页面时,浏览器的标题栏将显示该元素的内容。

我们使用了django-bootstrap3的一个自定义模板标签,它让Django包含所有的Bootstrap样式文件。接下来的标签启用你可能在页面中使用的所有交互式行为,如可折叠的导航栏。结束标签 。

2. 定义导航栏
下面来定义页面顶部的导航栏:

{% load bootstrap3 %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1" <title>Learning Log</title> {% bootstrap_css %} {% bootstrap_javascript %} </head> <body> <!-- Static navbar --> <nav class="navbar navbar-default navbar-static-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> </button> <a class="navbar-brand" href="{% url 'learning_logs:index' %}"> Learning Log</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="{% url 'learning_logs:topics' %}">Topics</a></li> </ul> <ul class="nav navbar-nav navbar-right"> {% if user.is_authenticated %} <li><a>Hello, {{ user.username }}.</a></li> <li><a href="{% url 'users:logout' %}">log out</a></li> {% else %} <li><a href="{% url 'users:register' %}">register</a></li> <li><a href="{% url 'users:login' %}">log in</a></li> {% endif %} </ul> </div><!--/.nav-collapse --> </div> </nav> </body> </html>

第一个元素为起始标签 。HTML文件的主体包含用户将在页面上看到的内容。