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学习pygal绘制线图代码分享
Dec 09 Python
Python中装饰器高级用法详解
Dec 25 Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Django Form 实时从数据库中获取数据的操作方法
Jul 25 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
Django Auth用户认证组件实现代码
Oct 13 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
python文件与路径操作神器 pathlib
Apr 01 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
四月新番又没了,《Re:从零开始的异世界生活》第二季延期至7月播出
2020/05/06 日漫
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
极典R601SW收音机
2021/03/02 无线电
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
下拉菜单点击实现连接跳转功能的js代码
2013/05/19 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
Jquery实现搜索框提示功能示例代码
2013/08/13 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
javascript实现类似java中getClass()得到对象类名的方法
2015/07/27 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
银行出纳岗位职责
2013/11/25 职场文书
售前工程师职业生涯规划
2014/03/02 职场文书
公司离职证明样本
2014/09/13 职场文书
四年级作文之植物
2019/09/20 职场文书