第 5章 开发“公司简介”模块 本章将开发的“公司简介”模块承接第4章的内容,对应hengDaProject项目中的aboutApp应用。该模块一共包含两个子页面: “企业概况”和“荣誉资质”,主要用于介绍企业的基本情况和展示企业获得的荣誉。图51和图52分别显示了两个子页面最终的效果图。“企业概况”页面与第4章制作的“科研基地”页面基本相同,页面全部由静态资源构成,包括说明文字和图片等,所有数据不需要从后台数据库读取。开发“企业概况”页面主要学习如何通过Bootstrap制作侧边导航栏。相对于“企业概况”页面,“荣誉资质”页面则采用动态数据嵌入的方式生成页面,其页面文字和图像均需要从后台读取, 视频讲解 其好处在于可以让网站管理员方便地对企业荣誉进行添加、修改和删除。在“荣誉资质”页面开发的过程中,会详 细阐述Django数据模型概念和基本使用方法。另外,Django提供了现成的后台管理系统,本章会阐述如何使用该后台管理系统以及如何对后台管理系统进行优化,方便管理员管理网站数据。 5.1继承模板 本节先来制作“公司简介”模块的基础页面。根据如图51所示页面效果,其与第4章制作的“科研基地”页面基本相同,仅在页面主体部分左侧多出一个侧边导航栏。下面进入具体的制作步骤。 按照第4章渲染页面的方法,首先打开aboutApp应用,在该应用下创建一个templates文件夹,然后在该文件夹下创建一个名为survey.html的网页文件。根据第4章创建的页面模板,以继承方式继承页面内容,包括: 页面头部、导航栏、页脚。具体代码如下。 {% extends "base.html" %} {% load staticfiles %} {% block title %} 图51“企业概况”页面效果 图52“荣誉资质”页面效果 企业概况 {% endblock %} {% block content %}
2011年加入互联网协会
2012年加入互联网协会
{{award.description}}
赋予动态内容。这种方式可以根据awards中的实际的条目数来生成缩略图。对该页面数据的增删查改不再需要开发人员变更代码实现,只需要通过后台管理系统操作数据即可完成数据更新。刷新页面后浏览效果如图510所示。 图510动态页面效果 可以看到每个缩略图的文字信息均已正确显示,但是图片信息没有显示出来。主要原因在于当前debug模式下没有将动态资源路径MEDIA_URL添加到静态路由static下。编辑配置文件夹hengDaProject下的urls.py文件,添加代码如下。 from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 保存修改后,重新刷新网页即可看到正确的效果图。至此,本节完成了数据库模型的导出和渲染。通过本节“荣誉资质”子模块的开发,相信读者已经掌握动态页面的制作流程和基本的数据库操作方法。后续章节的其他页面均采用这种动态页面的制作方式来实现。因此,希望读者能够牢牢掌握本节内容的知识点,多动手多实践,对于其中不清楚的地方可以结合本书配套资源代码来分析。 5.4优化后台管理系统 在5.3节中介绍了Django的后台管理系统的使用方法,对于开发人员来说,掌握该后台管理系统的使用是必需的,但是该系统对于非开发人员来说其交互方式并不友好,包括语言(Django后台管理系统默认语言为英文)和界面设计等。本节重点阐述如何对后台管理系统进行优化以方便今后将网站交付给实际客户使用。 5.4.1登录界面优化 1. 界面汉化 Django在创建项目时默认将英文作为项目主要语言,因此,在后台管理系统中大部分字段都是英文。下面首先对登录界面进行汉化处理。 打开项目配置文件settings.py,找到其中的LANGUAGE_CODE字段,该字段用于设置整个项目的语言,这里需要改为中文支持。另外,需要修改时区字段TIME_ZONE为中国时区,对其进行修改如下。 LANGUAGE_CODE = 'zh-Hans'#设置语言为中文 TIME_ZONE = 'Asia/Shanghai' #设置中国时区 修改后保存并启动项目。访问后台管理系统,可以发现关键字段英文都已转换为中文,效果如图511所示。 2. 修改管理系统名称 Django提供的后台管理系统默认的系统名称为“Django管理”,而在实际交付给客户使用时需要按照网站主题定义后台系统名字,因此接下来需要完成后台管理系统名称的修改。 打开aboutApp应用下的admin.py文件,在文件末尾添加代码: admin.site.site_header = '企业门户网站后台管理系统' admin.site.site_title = '企业门户网站后台管理系统' 上述代码分别对管理系统头部和页面标题进行了修改,保存修改后刷新页面如图512所示。这里注意,由于我们创建的项目hengDaProject是一个多应用项目,上述代码修改只需要放置在任一应用下的admin.py文件中即可生效。 图511Django后台管理系统登录界面汉化 图512修改Django后台管理系统名称 5.4.2主界面优化 1. 模型名称修改 主界面部分首先来修改数据模型的显示。由于创建了Award模型,因此在ABOUTAPP下可以看到英文显示的“Awards”字样(默认会以模型名的复数形式表示)。尽管开发人员知道该模型含义,但是对于非开发人员来说英文字样较为突兀,这里希望能够改成“获奖荣誉”。一种有效的解决思路就是在模型的创建过程中为模型创建一个中文别名,这样在后台管理系统中就可以用别名替代模型的真实名来显示。Django为这种思路提供了简单的实现方法,只需要修改模型的Meta元信息即可。打开aboutApp应用下的models.py文件,为定义的Award模型添加Meta元信息说明,代码如下。 class Award(models.Model): #荣誉模型 description = models.TextField(max_length=500, blank=True, null=True) #文字描述 photo = models.ImageField(upload_to='Award/', blank=True) #图片 class Meta: verbose_name = '获奖和荣誉' verbose_name_plural = '获奖和荣誉' 其中,verbose_name字段即为模型定义的别名,verbose_name_plural为别名对应的复数形式。保存后刷新页面即可看到如图513所示效果。 图513修改数据模型名称 2. 应用名称修改 接下来需要对应用名ABOUTAPP的显示进行修改。针对本章任务来说,需要将ABOUTAPP修改为“公司简介”。Django在后台默认显示的应用的名称为创建App时的名称,需要修改这个App的名称达到定制的要求。从Django 1.7版本以后不再使用app_label,修改App需要使用AppConfig。这里只需要在应用的init.py里面进行修改即可,打开aboutApp下的init.py文件,添加代码如下。 from os import path from django.apps import AppConfig VERBOSE_APP_NAME = '公司简介' def get_current_app_name(file): return path.dirname(file).replace('\\', '/').split('/')[-1] class AppVerboseNameConfig(AppConfig): name = get_current_app_name(file) verbose_name = VERBOSE_APP_NAME default_app_config = get_current_app_name( file) + '.init.AppVerboseNameConfig' 这里主要参考Django官方参考文档来实现,通过继承AppConfig类来设置App别名,该部分代码如果难以理解可以暂时不做深究,主要注意VERBOSE_APP_NAME字段,通过修改该字段可以为应用添加别名。保存修改后刷新页面,效果图如图514所示。 图514修改应用名称 后续章节每个应用在后台管理界面中均按照上述方法进行名称修改,本书对此不再重复阐述。 5.4.3列表界面优化 单击模型会进入模型列表页面,该页面中显示了模型的所有数据,注意到模型的每个字段依然是英文。接下来将对模型字段进行修改使得description和photo分别显示为“荣誉描述”和“荣誉照片”。解决方法与模型名称的修改基本一致,通过对模型每个字段取别名来进行显示。重新编辑Award模型中的description和photo字段,为每个字段添加verbose_name属性,具体修改如下。 description = models.TextField(max_length=500, blank=True, null=True, verbose_name='荣誉描述') photo = models.ImageField(upload_to='Award/', blank=True, verbose_name='荣誉照片') 保存修改后刷新页面,效果如图515所示。 图515修改模型字段名称 小结 本章实现“公司简介”模块的开发,该模块共包含两个页面: 一个静态页面(“企业概况”页面)和一个动态页面(“荣誉资质”页面)。静态页面主要学习模板的继承以及侧边导航栏的制作。动态页面则通过Django实现了“荣誉”模型的后台管理和页面显示,重点需要掌握Django数据模型创建方式、后台管理系统的使用技巧以及前端页面渲染动态数据方法。本章最后一节阐述如何对后台管理系统进行优化以方便非开发用户使用。本章内容侧重阐述后端Python Web编程知识,通过一个动态页面的制作来学习Django数据库的使用,后续章节的页面大部分均采用这种动态页面制作的方式实现。因此,读者需要牢牢掌握本章知识内容。