美文网首页《Django By Example》百人计划
Django-01-创建项目,应用及模型

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

作者: JOooo_ | 来源:发表于2018-06-20 17:48 被阅读23次

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

    环境: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

    相关文章

      网友评论

      本文标题:Django-01-创建项目,应用及模型

      本文链接:https://www.haomeiwen.com/subject/hvtxyftx.html