6. Django 2.1.7 创建项目

参考文献

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 项目名称

$ 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 初学者,阅读官方文档中的 更多关于包的知识
  • mysite/settings.py:Django 项目的配置文件。如果你想知道这个文件是如何工作的,请查看 Django settings 了解细节。
  • mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。阅读 URL调度器 文档来获取更多关于 URL 的内容。
  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。阅读 如何使用 WSGI 进行部署 了解更多细节。

用于开发的简易服务器

让我们来确认一下你的 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 代码输入进去:

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 中,输入如下代码:

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步是要在根 URLconf 文件中指定我们创建的 assetinfo.urls 模块。在 test1/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

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() 允许引用其它 URLconfs。每当 Django 遇到 :func:<cite>~django.urls.include</cite> 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。

设计 include() 的理念是使其可以即插即用。因为应用有它自己的 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服务器,仅在开发阶段使用。

运行服务器命令如下:

python3 manage.py runserver ip:port
例:
python3 manage.py runserver

可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容