Python之Web框架Django项目搭建全过程
作者:孙华强 发布时间:2022-03-21 03:06:08
Python之Web框架Django项目搭建全过程
IDE说明:
Win7系统
Python:3.5
Django:1.10
Pymysql:0.7.10
Mysql:5.5
注:可通过pip freeze查看已安装库版本信息。
Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!
Django 特点
强大的数据库功能
用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句。
自带的强大的后台功能
几行简单的代码就让你的网站拥有一个强大的后台,轻松管理你的内容! 优雅的网址
用正则匹配网址,传递到对应函数,随意定义,如你所想!
模板系统–强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。
缓存系统–与memcached或其它的缓存系统联用,更出色的表现,更快的加载速度。
国际化–完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。
有关Python,MySQL的安装操作这里不再进行阐述,大家可在网络上自行查找解决。其中,django,pymysql的安装使用pip install *命令即可完成。
安装好Django之后, 就可以使用 django-admin.py管理工具来创建一个项目。首先我们来看下django-admin.py的命令介绍,在命令行输入django-admin.py查看可用的项目管理命令。
Django项目创建HelloWorld项目具体过程如下:
Step1: 在搭建Django项目之前,首先选择项目存放目录。然后在Dos窗口CD切换到项目存放目录。
Step2: 创建项目 执行django-admin.py startproject HelloWorld
打开IDEA,可看到创建的项目目录如下图所示:
目录说明:
HelloWorld: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
HelloWorld/settings.py: 该 Django 项目的设置/配置。
HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python manage.py runserver 0.0.0.0:8000
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入你服务器的ip及端口号,如果正常启动,输出结果如下:
Step3: 创建应用 在命令行输入django-admin.py startapp demo
打开IDEA,可看到创建的项目目录如下图所示:
目录说明:
demo: 应用的容器。注:后面的页面设计文件,在此目录下创建目录templates,名为XX.html的文件放在此处。
init.py:如上一个init.py文件
migrations: 数据库相关目录,同步数据库之后会出现数据类。
admin.py: admin后台管理文件
apps.py: app应用管理文件
models.py:主要用一个 Python 类来描述数据表,称为模型(model) 。运用这个类,你可以通过简单的 Python的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。
tests.py:测试文件
views.py:包含了页面的业务逻辑。
创建超级管理员
python manage.py createsuperuser
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
# 修改 用户密码可以用:
python manage.py changepassword username
附
服务端响应客户端请求过程
流程图如下:
上面的流程图可以大致描述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,接下来详细介绍这四个参数。
regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
view: 用于执行与正则表达式匹配的 URL 请求。
kwargs: 视图使用的字典类型的参数。
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=”*”。
来源:http://blog.csdn.net/sunhuaqiang1/article/details/70182416


猜你喜欢
- 1.环境配置:2.实现原理:Php使用扩展插件imagick进行图片处理,处理pdf时使用imagick去调用ghostscript3.安装
- 一、hashlib模块什么是哈希模块:hashlib模块是一种加密模块,内部存有多种加密类型加密的作用:可将明文数据进行加密,转换成一串密文
- 鸭子类型基本定义首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。以下是 * 中对鸭子类型得论述:在程
- 最近在使用Tensorflow 实现DNN网络时,遇到一些问题。目前网上关于Tensorflow的资料还比较少,现把问题和解决方法写出来,仅
- 使用 Django自带的 auth 用户验证功能,编写函数,使用 is_authenticated 检查用户是否登录,结果报错:TypeEr
- 前言加密解密在实际开发中应用比较广泛,常用加解密分为:“对称式”、“非对称式&a
- 3月27日,淘宝网获得了由国际权威机构G-CEM颁发的2008年度亚洲区在线客户体验大奖,这是全球互联网企业首次获得此殊荣。如何在让买家更方
- Python在很大程度上可以对shell脚本进行替代。笔者一般单行命令用shell,复杂点的多行操作就直接用Python了。这篇文章就归纳一
- 无聊统计了下列表去重到底有多少种方法。下面小编给大家总结一下,具体内容详情如下;开发中对数组、列表去重是非常常见的需求,对一个list中的i
- 序言这次玩次狠得。除了编译器使用yum安装,其他全部手动编译。哼~看似就Nginx、PHP、MySql三个东东,但是它们太尼玛依赖别人了。没
- 本文实例讲述了Python动态生成多维数组的方法。分享给大家供大家参考,具体如下:多维数组其实就是多个一维数组的嵌套,Python中有原生的
- 今天学习下Go语言如何集成Gin框架编写Restful Web API的基本操作。Gin框架简化了Go原生语言构建Web应用程序的复杂度,在
- 三个页在同一个窗口,分别为main.htm,left.htm和right.htm。 main.htm <html> <he
- 目前市面上成熟的CMS产品有很多,无外乎两种解决方案:第一种就是用XSL+XML的方式来实现客户端具体数据;第二种是生成HTML或者SHTM
- MooTools 1.2的整理排序类Sortables原文地址:30 Days of Mootools 1.2 Tutorials - Da
- 设计师常常使用一些独特的字体效果和页面效果,阴影是其中一个,它可以让页面中的文字和元素具有立体的效果,从而被突出出来。比如对于文字阴影,传统
- 所谓网络爬虫,通俗的讲,就是通过向我们需要的URL发出http请求,获取该URL对应的http报文主体内容,之后提取该报文主体中我们所需要的
- 最近在使用echarts做报表需求,二次生成报表时数据合并,无法正确显示。第一次渲染:第二次渲染:可以看到这里的echarts项的serie
- 如下所示:# Seed random number generatornp.random.seed(42)# Compute mean no
- asp读取access数据库表名称的代码:<%strConn="DBQ="+server.mappath(&quo