基于Django的电子商务网站开发(连载3)

简介: 本文首先介绍了Python的安装选择,建议基于2.X系列进行维护工作,而新项目则选用3.X系列,并提供了官方下载地址及环境配置说明。随后,文章详细阐述了Django框架的特点和设计理念,包括其核心组件、快速开发原则及DRY原则,并简述了Django的工作流程和技术优势。

1.1.2 Python的安装

目前市场上Python 2.X系列与Python 3.X系列共存的现象。读者可以安装Python 2.X系列或者Python 3.X系列。如果开发的目的是基于原有Python 2.X系列产品的维护,作者建议选择Python 2.X系列;如果是开发一个完全新的产品,那么作者建议选择Python 3.X系列。作者写这本书的时候,Python的最高版本是3.6,但是作者担心Python 3.6还是不成熟,所以本书选择版本的是Python 3.5。

Python工具的官方下载地址是http://www.python.org/download。

Python下载完毕以后务必注意要配置好环境变量。(本书全部基于Windows开发环境进行介绍。)

图1-1是配置PYTHON_HOME变量,变量值为安装Python的文件路径,在Python3.5中默认为C:\Users\<Your_ID>\AppData\Local\Programs\Python\Python35。

图1-2是在path中增加的两个参数,设置%PYTHON_HOME%是为了可以在任意路径下运行python命令;设置%PYTHON_HOME%\Scripts\是为了可以在任意路径下运行%PYTHON_HOME%\scripts\路径下的命令,比如pip或pip3。

图1-1 PYTHON_HOME的配置

图1-2 PATH中的配置

1.2 Django 框架

1.2.1 Django的介绍

1. Django概况

Django项目是一个Python语言定制框架,它源自一个在线新闻 Web站点,于2005年以开源的形式被释放出来。Django 框架的核心组件如下。

(1)用于创建模型的对象关系映射。

(2)为最终用户设计完美的管理界面。

(3)一流的 URL 设计。

(4)设计者友好的模板语言。

(5)缓存系统。

Django是用Python语言开发的一个开源的Web开发框架(OpenSource Web Framework,OSWF),它鼓励快速开发,并遵循MVC设计理念。Django遵守BSD版权[1],初次发布于2005年7月,并于2008年9月发布了第一个正式版本1.0。

Django根据比利时的爵士音乐家DjangoReinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

由于Django在近年来的迅速发展,应用越来越广泛,被著名IT开发杂志SD Times[2]评选为2013 SDTimes 100,位列“API、库和框架”分类第六位,被认为是该领域的佼佼者。

2. Django的设计理念

Django的主要目的是简便、快速地开发数据库驱动的网站。它强调代码的复用以及多个组件可以很方便地以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便地开发出自己的工具包。这使得Django具有很强的可扩展性。Django还强调快速开发和DRY(Do Not Repeat Yourself)的原则。

Django基于MVC的设计十分优美。

(1)对象关系映射(Object-RelationalMapping,ORM):以Python类形式定义数据模型,ORM将模型与关系数据库连接起来,将得到一个非常容易使用的数据库API。虽然在Django中可以使用原始的SQL语句。一般从安全角度来说,是不建议的,因为一是Django已经对SQL语句进行了很好地封装,二是显示SQL语句容易引发类似SQL注入的威胁。本书将在第2.7节中进行详细地介绍。

(2)URL分配:使用正则表达式匹配URL,就可以设计任意的URL。本书将在第2.8.1节中进行详细地介绍。

(3)模板系统:Django提供强大而可扩展的模板语言,它可以分隔设计、内容和Python代码,并且具有可继承性。本书将在第2.9节中进行详细地介绍。

(4)表单处理:可以方便地生成各种表单模型,实现表单的有效性检验。可以方便地从定义的模型实例生成相应的表单。本书将在第3.3节开始进行详细地介绍。

(5)Cache系统:可以挂在内存缓冲或其他的框架实现超级缓冲——实现所需要的粒度。

(6)会话(session):用户登录与权限检查,快速开发用户会话功能。本书将在第2.4节中进行详细地介绍。

(7)国际化:内置国际化系统,方便开发出多种语言的网站。

(8)自动化的管理界面:不需要使用大量的工作来创建人员管理和更新内容。Django自带一个Admin Site,类似于内容管理系统。

3. 工作原理

(1)用manage.py runserver启动Django服务器。

(2)同时载入同一目录下的settings.py。该文件包含了项目中的配置信息,如URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf。见图1-3所示。

图1-3 settings.py中的ROOT_URLCONF

(3)当访问URL的时候,Djang会根据ROOT_URLCONF的设置来装载URLConf。

(4)然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图方法,并把HttpRequest对象作为第一个参数(通常是request)。

(5)最后该view方法负责返回一个HttpResponse对象。

请参见图1-4。

图1-4 Django的工作原理

[1] BSD (Berkeley Software Distribution,伯克利软件套件)是UNIX的衍生系统,在1977至1995年间由加州大学伯克利分校开发和发布的。——百度百科

[2] SD Time即《软件开发时代》杂志

目录
相关文章
|
网络协议 Python
在Python中进行UDP(User Datagram Protocol)网络编程
在Python中进行UDP(User Datagram Protocol)网络编程
409 3
|
10月前
|
人工智能 运维 自然语言处理
《探寻开源AI项目的资金密码:可持续运营之路》
在人工智能浪潮中,开源项目汇聚全球智慧,推动AI创新。然而,资金困境限制了其发展。企业赞助、社区捐赠、政府资助、付费服务等模式可为开源项目提供稳定资金来源。通过成本控制、合作伙伴关系及品牌建设,开源项目能实现可持续运营,突破发展瓶颈,为AI领域注入源源不断的活力。
223 12
|
9月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
330 5
图解MySQL【日志】——Redo Log
|
12月前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
SQL API 数据安全/隐私保护
打造现代化后端服务:从零到一实现RESTful API
【10月更文挑战第20天】在数字化时代的浪潮中,构建一个高效、可靠的后端服务是每个软件工程师的必备技能。本文将引导你理解RESTful API的设计哲学,并通过实际的代码示例,展示如何从无到有地实现一个现代化的后端服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和启发。
|
存储 SQL 分布式计算
企业数仓架构设计实践
本文是一位数据架构师在设计企业级数据仓库架构时的思考与实践经验分享。从理论基础(数据仓库概念、Lambda架构、Kimball与Inmon方法)到工具选型(如Hadoop、Hive、Spark、Airflow、Tableau等),再到实践过程(需求调研、架构设计、技术选型落地、数据模型设计、测试迭代及用户培训),全面阐述了数仓建设的各个环节。强调了业务理解与技术结合的重要性,并指出数仓建设是一个持续优化、适应业务发展变化的过程。
662 3
|
机器学习/深度学习 数据采集 算法
Python实现Catboost回归模型(CatBoostRegressor算法)项目实战
Python实现Catboost回归模型(CatBoostRegressor算法)项目实战
|
Oracle 关系型数据库 MySQL
Mysql和Oracle数据库死锁查看以及解决
【8月更文挑战第11天】本文介绍了解决MySQL与Oracle数据库死锁的方法。MySQL可通过`SHOW ENGINE INNODB STATUS`查看死锁详情,并自动回滚一个事务解除死锁;也可手动KILL事务。Oracle则通过查询V$LOCK与V$SESSION视图定位死锁,并用`ALTER SYSTEM KILL SESSION`命令终止相关会话。预防措施包括遵循ACID原则、优化索引及拆分大型事务。
965 3
|
算法 Ubuntu Linux
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
在Linux中,对比apt和yum两种包管理器在不同Linux发行版中应用有何区别?
|
分布式计算 算法 Java
python中内存错误(MemoryError)
【7月更文挑战第15天】
2076 4
下一篇
开通oss服务