参考文献
Django 2.2 官方文档
https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial01/ ”
近期打算基于django最新版本写一套监控类管理系统,以该项目为例,讲解django如何创建项目。
在监控类管理系统,对于运维开发这块必定存在很多功能模块,例如 资产管理、中间件监控(memcached、redis等),还有ansible远程调用批量处理模块等等。
这么多的模块应该怎么拆分去写呢?
在django中,项目的组织结构为一个项目包含多个应用,一个应用对应一个业务模块。也就是说,上面说的那么多个功能模块,可以分开多个应用去逐个编写,逐个击破。
安装Django 2.1.7
pip3 install django==2.1.7
示例
创建项目的名称为mysite,完成"资产-中间件"信息的维护,创建应用名称为assetinfo。
创建项目
django-admin startproject 项目名称
代码语言:javascript复制$ django-admin startproject mysite
$ ls mysite/
manage.py* mysite/
可以看到已经创建好了mysite项目目录。使用pycharm打开项目。
可以看到项目已经自动创建了不少目录了,其中里面存在了一个mysite的文件夹。
这些目录和文件的用处是:
- 最外层的
mysite/
根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。 manage.py
: 一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin and manage.py 获取所有manage.py
的细节。- 里面一层的
mysite/
目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。(比如mysite.urls
). mysite/__init__.py
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。如果你是 Python 初学者,阅读官方文档中的 更多关于包的知识[1]。mysite/settings.py
:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django settings 了解细节。mysite/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。mysite/wsgi.py
:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。
用于开发的简易服务器¶[2]
让我们来确认一下你的 Django 项目是否真的创建成功了。如果你的当前目录不是外层的 mysite
目录的话,请切换到此目录,然后运行下面的命令:
$ python3 manage.py runserver
在这里如果不对urls.py
进行修改,直接启动就会报错。错误参见Django 2.1.7 runserver启动直接报错.
首先需要修改urls.py
文件代码如下:
from django.contrib import admin
from django.urls import include, path # 增加导入include方法
urlpatterns = [
path('admin/', admin.site.urls),
]
然后再次启动开发服务,如下:
创建应用
使用一个应用开发一个业务模块,此处创建应用名称为assetinfo
,完成资产-中间件的信息维护。
创建应用的命令如下:python3 manage.py startapp assetinfo
可以看到,执行命令之后,就创建了一个应用名的文件夹,并自动生成了相关文件,下面对文件说明如下:
_init.py_
是一个空文件,表示当前目录assetinfo可以当作一个python包使用。tests.py
文件用于开发测试用例,在实际开发中会有专门的测试人员,这个事情不需要我们来做。models.py
文件跟数据库操作相关。views.py
文件跟接收浏览器请求,进行处理,返回页面相关。admin.py
文件跟网站的后台管理相关。migrations
文件夹之后给大家介绍。
编写第一个视图
让我们开始编写第一个视图吧。打开 assetinfo/views.py,把下面这些 Python 代码输入进去:
代码语言:javascript复制from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the assetinfo index.")
这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。
为了创建 URLconf,请在 assetinfo 目录里新建一个 urls.py 文件。你的应用目录现在看起来应该是这样:
在 assetinfo /urls.py 中,输入如下代码:
代码语言:javascript复制from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
下一步是要在根 URLconf 文件中指定我们创建的 assetinfo.urls 模块。在 test1/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:
代码语言:javascript复制from django.contrib import admin
from django.urls import include, path # 增加导入include方法
urlpatterns = [
path('assetinfo/', include('assetinfo.urls')), # 导入assetinfo应用的urls.py
path('admin/', admin.site.urls),
]
函数 `include()`[3] 允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
设计 `include()`[4] 的理念是使其可以即插即用。因为应用有它自己的 URLconf( assetinfo/urls.py
),他们能够被放在 "/assetinfo/" , "/fun_assetinfo/" ,"/content/assetinfo/",或者其他任何路径下,这个应用都能够正常工作。
现在把 index 视图添加进了 URLconf。可以验证是否正常工作,运行下面的命令:
python3 manage.py runserver
用你的浏览器访问 http://localhost:8000/assetinfo/,你应该能够看见 "Hello, world. You're at the polls index." ,这是你在 index
视图中定义的。
启动开发web服务
在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。
运行服务器命令如下:
代码语言:javascript复制python3 manage.py runserver ip:port
例:
python3 manage.py runserver
可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。