前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文完全解读django结构【二】

一文完全解读django结构【二】

作者头像
周辰晨
发布2020-01-20 16:08:16
7880
发布2020-01-20 16:08:16
举报

国庆最后一个工作日,很多同学已经提前放假了,上班的同学也在为祖国的生日倒计时了,小编紧赶慢赶,节日前新写了一篇文章送给大家,希望大家多多转发!

前言

上篇文章简单的梳理了Django的一些基础知识,介绍了Django的MTV模式,这篇我们就开始介绍如何创建Django工程,以 及Django工程的目录结构。另外还会介绍平时开发工作中必不可少的沙盒环境是如何建立的。

创建Django工程及应用

Django环境搭建

1. 关于 Python开发环境的搭建和pip 的安装这边就不再介绍了,在安装过程中有问题的同学可以关注我们的公众号来咨询。

2. Django的安装(windows)

Django 的安装 有两种:下载源码安装 https://www.djangoproject.com/download/ 下载源码包,如django-1.11.8.tar.gz,直接用解压软件解压,比如解压到 D:\django-1.11.8\ 这个目录下,执行如下命令

cd D:

cd django-1.11.8

python setup.py install

利用pip 安装

pip install django

3. 检查是否安装成功 在 python终端输入django.VERSION,如果显示安装的版本号,就表示Django 安装成功

(blogOnline) zhangchengdeMBP-96bd:~ zhangcheng$ python Python 2.7.10 (default, Aug 17 2018, 19:45:58) [GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.VERSION (1, 9, 0, 'final', 0)

新建Django工程

创建工程有两种方式,通过命令行创建和通过Pycharm创建,我们这边会介绍通过命令行创建工程。打开命令行, cd 到一个你想放置代码的位置,然后运行一下命令:

django-admin startproject demo_proj

# 如 果 提 示 命 令 不 存 在,可 以 用 django-admin.py 来 尝 试 下

这行命令会在当前目录下创建一个 demo_proj 目录,我们来看下 startproject 创建了些什么:

上篇公众号已经大概的介绍了Django工程的目录结构,我这边再次重新说明下:

最外层的:file: demo_proj/ 根目录只是你项目的容器,可以重命名为任何你喜欢的名字。manage.py : 一个让你用各种方式管理 Django 项目的命令行工具。

里面一层的 demo_proj/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。(比如 demo_proj.urls)

demo_proj/init.py :一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。demo_proj/settings.py :Django 项目的配置文件

demo_proj/urls.py :Django 项目的 URL 路由配置,就像你网站的“目录”。

demo_proj/wsgi.py :作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。

启动Django工程

工程创建完毕,我们要来确认下是否创建成功。在命令行窗口我们返回到我们刚才创建的 demo_proj最外层目录,执行如下命令:

...\> python manage.py runserver

如果启动成功,会看到如下输出:

浏览器访问 http://127.0.0.1:8000/ ,就能打开页面,如果想要更换端口号,在刚才的命令下加上指定的端口号就行.

...\> python manage.py runserver 8066

创建应用 经过上面的步骤,你的Django开发环境--这个“项目”已经配置完了,你就可以开始正式的干活了。在Django中,每一个应用都是一个Python包。Django自带工具,可以帮你生成应用的基础目录结构,这样你就能专心写代 码,而不是创建目录了。

项目VS应用 你可以把应用理解为实现某个具体业务功能的模块,项目则是配置和应用的集合,一个项目中可以包含多个应用。

我们将在我们创建的 demo_proj 工程中的 manage.py 同级目录下创建投票应用。这样它就可以作为顶级模块导入,而不是 demo_proj 的子模块。在命令行模式下将路径切换到 demo_proj 工程中的 manage.py 同级目录下,并执行命令:

...\>python manage.py startapp demo_app

这里会创建一个demo_app应用,他的目录结构如下:

编写第一个视图 准备工作都以做好,让我们来编写第一个视图。打开demo_app/views.py,输入如下代码

这是一个简单的视图,如果我们要看到他的效果,我们需要配置URL映射,在 demo_app 目录里新建urls.py文件,你的 demo_app 目录结构应该是这样

在刚新建的urls.py 文件下输入代码:

下一步我们要在项目的 URLconf 文件中指定我们创建的 demo_app.urls 模块,在 demo_proj 根目录下的urls.py文件新增如下 代码:

启动服务,看是否能正常运行: python manage.py runserver

然后用浏览器访问 http://localhost:8000/demo_app/,你就会看到

Hello, world. This is your first Django

解释下运行原理:

1. 当在浏览器输入 http://localhost:8000/demo_app/ 这个网址时,服务务器接收到这个请求,demo_proj 目录下的urls.py 会对发送过来的url作路由分析,当他发现请求地址有 demo_app 时,会把路由请求转发到 demo_app 这个app下的 urls.py 文件继续做路由分析决定

url('demo_app/', include('demop_app.urls')),

2. 在 demo_app 中的urls.py接收到这个请求,就决定了由该目录下的views.py 中的 index 方法来处理该请求。

path('', views.index, name='index'),

3. views.py 文件中定义的index 方法,就返回 Hello, world. This is your first Django

def index(request): return HttpResponse("Hello, world. This is your first Django")

4. 浏览器接收到服务器发送过来的返回信息,在浏览器上显示 Hello, world. This is your first Django . 至此,一个最简单的但也是完整的HTTP请求已经完成,在后续我们将还会将学习到如何处理GET请求和POST请求。

沙盒环境

在实际的开发过程中,不同的项目也许对Python的版本有不同的要求,或者不同的项目依赖的第三方包的版本有不同要求,这 就要求我们在一台机器上创建多个Python运行环境,VirtualEnvWrapper为此供了一些便利的命令行上的封装。使用沙盒环境 的好处:避免了项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3。

为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。沙盒环境就相当于一 个一个不同的盒子,在这个盒子里安装的任何软件包都不会影响到其他和盒子。

常用操作命令如下:

#安装`virtualenvwrapper`

pip install virtualenvwrapper-win

# 创建沙盒环境

mkvirtualenv 虚拟环境名称

#显示已创建的虚拟环境

workon

# 进入到某个虚拟环境中

workon 沙盒环境名称

# 退出当前虚拟环境

deactivate

# 删除制定的虚拟环境

rmvirtualenv XXX

# 安装指定python版本的虚拟环境

mkvirtualenv --python==+(指定的python路径) +虚拟环境名称

# 环境变量的配置

virtualenvwrapper创建的虚拟环境都在默认的目录内, 如果你想更改到别的盘 可以在 此电脑->右键->属性->高级系统设置->环境变量->系统变量 中添加一个参数 WORKON_HOME 并更改参数的值为所需要的路径,之后创建将默认到你所需要的路径中

既然来过,就关注下吧,好文持续输出

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师影响力 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档