Django-01-创建项目,应用及模型

根据官网的实例创建自己的项目及应用
描述:实现一个项目进度跟踪功能。每个项目需要办不同的证件,对这些证件的进度进行跟踪。

环境:django 2.0 ; python 3.6


-----创建第一个项目,创建第一个app-----

1. 创建项目

命令:django-admin startproject mysite

创建名为mysite的项目,同时创建了该项目实例需要的设置项集合,包括数据库配置、Django 配置和应用程序配置等。

查看已创建项目的目录如下:

mysite/ 
    manage.py 
    mysite/ 
        __init__.py 
        settings.py 
        urls.py 
        wsgi.py

这些目录和文件的用处:

  • manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
  • 里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
  • mysite/settings.py:Django 项目的配置文件。
  • mysite/urls.py:Django 项目的 URL 声明,就像网站的“目录”。
  • mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。

现在可以运行 python manage.py runserver 来确认项目是否创建成功。

2. 创建应用

项目和应用的区别:应用是一个专门做某件事的网络应用程序——比如博客系统,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。

python manage.py startapp projtrack

这里创建一个名为projtrack的应用。目录结构如下:

projtrack/ 
    __init__.py 
    admin.py 
    apps.py 
    migrations/ 
        __init__.py 
    models.py 
    tests.py 
    views.py
3. 编写视图

projtrack/views.py中创建视图index,代码如下:

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the index.")

然后在projtrack新建urls.py,在其中创建url对应视图的关系

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

下一步需要在根 URLconf 文件中添加指向projtrack.urls的路径。在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 即:

mysite/urls.py中添加:path('projtrack/', include('projtrack.urls'))


-----初始化数据库,创建第一个模型----

1. 初始化数据库

打开 mysite/settings.py, 其中DATABASES 'default'显示数据库的配置。默认为sqlite3,这里使用默认的数据库配置。

编辑 mysite/settings.py 文件前,先设置 TIME_ZONE 为自己的时区。

中国:TIME_ZONE = 'Asia/Shanghai'

查看INSTALLED_APPS, 默认包括了Django的自带应用,在使用他们之前需要在数据库中创建一些表。使用以下命令初始化数据库:

python manage.py migrate

2. 创建模型

projtrack/models.py中创建模型。模型,也就是数据库结构设计和附加的其它元数据。它包含了储存的数据所必要的字段和行为。

我们先创建两个模型:项目Project和进度Schedule(每个项目会需要办多个证件,这里进度指的是每个证件的进度)。

from django.db import models
from django.utils import timezone
from django.urls import reverse

class Project(models.Model):
    PROJECT_STATUS = (
        ('有效','有效'),
        ('作废','作废'),
    )
    def __str__(self):
        return self.project_name
    project_name = models.CharField(max_length=200)
    description = models.CharField(max_length=200)
    project_status = models.CharField(choices=PROJECT_STATUS, default='有效', max_length=200)
    cre_date = models.DateTimeField('date created', default=timezone.now, blank=True)


class Schedule(models.Model):
    def __str__(self):
        return self.schedule_text
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    schedule_text = models.CharField(default='', max_length=200)
    notes = models.CharField(default='', max_length=200, blank=True)
    edit_by = models.CharField(default='', max_length=200)
    modify_date = models.DateTimeField('date modified', default=timezone.now)

每个模型被表示为 django.db.models.Model 类的子类。每个模型有一些类变量,它们都表示模型里的一个数据库字段。每个字段都是 Field 类的实例。

注意:

  • 数据库的表名是由应用名(projtrack)和模型名的小写形式( project和 schedule)连接而来。(如果需要,也可以自定义此行为。)
  • 主键(IDs)会被自动创建。(当然,也可以自定义。)
  • 默认的,Django 会在外键字段名后追加字符串 "_id" 。(同样,这也可以自定义。)
3. 激活模型

首先需要在工程中包含这个应用,在mysite/settings.pyinstalled app中添加:
'projtrack.apps.ProjtrackConfig'

然后告诉django更改了模型,并进行同步:
python3 manage.py makemigrations projtrack
通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。

再运行:
python3 manage.py migrate
migrate命令可以自动执行数据库迁移并同步管理你的数据库结构的命令

备注:项目更改过程中我更改过很多次数据库结构和字段,每次迁移会在projtrack/migrations下自动创建一个文件(相当于一个记录文件)。后来因为记录太多想删掉,于是先迁移回了0001_initial的状态(运行命令:python3 manage.py sqlmigrate projtrack 0001)。然后删掉其它的记录文件,再重新makemigrations, migrate迁移一次就可以了。


----django自动生成的admin页面----

1.django后台管理页面

创建管理账号
python manage.py createsuperuser
会提示输入用户名,邮箱和密码

然后在projtrack/admin.py中注册模型

admin.site.register(Project)
admin.site.register(Schedule)

启动开发服务器:python manage.py runserver

登录后台页面http://127.0.0.1:8000/admin可以看到Project和Schedule。可直接在后台页面添加project和schedule。

image.png

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

推荐阅读更多精彩内容