Python之Web框架Django项目搭建全过程


Posted in Python onMay 02, 2017

Python之Web框架Django项目搭建全过程

IDE说明:

  1. Win7系统
  2. Python:3.5
  3. Django:1.10
  4. Pymysql:0.7.10
  5. Mysql:5.5

注:可通过pip freeze查看已安装库版本信息。

Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!

Django 特点

  1. 强大的数据库功能
  2. 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句。
  3. 自带的强大的后台功能
  4. 几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容! 优雅的网址
  5. 用正则匹配网址,传递到对应函数,随意定义,如你所想!
  6. 模板系统?强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。
  7. 缓存系统?与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。
  8. 国际化?完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。

有关Python,MySQL的安装操作这里不再进行阐述,大家可在网络上自行查找解决。其中,django,pymysql的安装使用pip install *命令即可完成。

安装好Django之后, 就可以使用 django-admin.py管理工具来创建一个项目。首先我们来看下django-admin.py的命令介绍,在命令行输入django-admin.py查看可用的项目管理命令。

Python之Web框架Django项目搭建全过程 

Django项目创建HelloWorld项目具体过程如下:

Step1: 在搭建Django项目之前,首先选择项目存放目录。然后在Dos窗口CD切换到项目存放目录。

Step2: 创建项目 执行django-admin.py startproject HelloWorld

打开IDEA,可看到创建的项目目录如下图所示:

Python之Web框架Django项目搭建全过程 

目录说明:

  1. HelloWorld: 项目的容器。
  2. manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
  3. HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  4. HelloWorld/settings.py: 该 Django 项目的设置/配置。
  5. HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
  6. HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:

python manage.py runserver 0.0.0.0:8000

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。

在浏览器输入你服务器的ip及端口号,如果正常启动,输出结果如下:

Python之Web框架Django项目搭建全过程 

Step3: 创建应用 在命令行输入django-admin.py startapp demo

打开IDEA,可看到创建的项目目录如下图所示:

Python之Web框架Django项目搭建全过程 

目录说明:

  1. demo: 应用的容器。注:后面的页面设计文件,在此目录下创建目录templates,名为XX.html的文件放在此处。
  2. init.py:如上一个init.py文件
  3. migrations: 数据库相关目录,同步数据库之后会出现数据类。
  4. admin.py: admin后台管理文件
  5. apps.py: app应用管理文件
  6. models.py:主要用一个 Python 类来描述数据表,称为模型(model) 。运用这个类,你可以通过简单的 Python的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。
  7. tests.py:测试文件
  8. views.py:包含了页面的业务逻辑。

创建超级管理员

python manage.py createsuperuser

# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填

# 修改 用户密码可以用:
python manage.py changepassword username

服务端响应客户端请求过程

流程图如下:

Python之Web框架Django项目搭建全过程 

上面的流程图可以大致描述Django处理request的流程,按照流程图2的标注,可以分为以下几个步骤:

1.用户通过浏览器请求一个页面。

2.请求到达Request Middlewares,中间件对request做一些预处理或者直接response请求。

3.URLConf通过urls.py文件和请求的URL找到相应的View。

4.View Middlewares被访问,它同样可以对request做一些处理或者直接返回response。

5.调用View中的函数。

6.View中的方法可以选择性的通过Models访问底层的数据。

7.所有的Model-to-DB的交互都是通过manager完成的。

8.如果需要,Views可以使用一个特殊的Context。

9.Context被传给Template用来生成页面。

a.Template使用Filters和Tags去渲染输出

b.输出被返回到View

c.HTTPResponse被发送到Response Middlewares

d.任何Response Middlewares都可以丰富response或者返回一个完全不同的response

e.Response返回到浏览器,呈现给用户

url() 函数

Django url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name,接下来详细介绍这四个参数。

  1. regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
  2. view: 用于执行与正则表达式匹配的 URL 请求。
  3. kwargs: 视图使用的字典类型的参数。
  4. name: 用来反向获取 URL。

Django项目部署

在前面的介绍中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。
正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,本文后续将以 Nginx 为例。

设置用自己的iP地址访问项目

1.首先需要执行>manage.py runserver 0.0.0.0:8000。

2.在setting.py里面需要添加ALLOWED_HOSTS=”*”。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python的类变量和成员变量用法实例教程
Aug 25 Python
Python语法快速入门指南
Oct 12 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
mac下如何将python2.7改为python3
Jul 13 Python
Django Rest framework之权限的实现示例
Dec 17 Python
在Python中过滤Windows文件名中的非法字符方法
Jun 10 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python关于调用函数外的变量实例
Dec 26 Python
python虚拟环境模块venv使用及示例
Mar 04 Python
Python小白垃圾回收机制入门
Jun 09 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 Python
python3实现抓取网页资源的 N 种方法
May 02 #Python
Pycharm学习教程(2) 代码风格
May 02 #Python
Pycharm学习教程(1) 定制外观
May 02 #Python
pycharm安装图文教程
May 02 #Python
python安装教程 Pycharm安装详细教程
May 02 #Python
python处理xml文件的方法小结
May 02 #Python
python实现的AES双向对称加密解密与用法分析
May 02 #Python
You might like
PHP中的函数声明与使用详解
2017/05/27 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
初探jquery——表单应用范例
2007/02/20 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Python的设计模式编程入门指南
2015/04/02 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
详解Python中import机制
2020/09/11 Python
浅谈HTML5 服务器推送事件(Server-sent Events)
2017/08/01 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
地球一小时宣传标语
2014/06/24 职场文书
课外活动总结范文
2014/07/09 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
业余无线电通联Q语
2022/02/18 无线电