在Django中创建模型 - 初学者教程

70 阅读2分钟

编码员们好。

本文旨在帮助初学者了解如何**在Django框架通过从头开始编码一个新的应用程序并主要使用终端来创建一个模型**。该示例源代码可以从Github(MIT许可)下载,并为业余爱好和商业产品进行扩展。对于新手来说,Django是一个由经验丰富的开发者建立的高级Python Web框架,它鼓励快速开发和简洁、务实的设计。

谢谢你的阅读!- 内容由**App Generator**提供。

让我们来编写Django代码

检查Python版本--推荐版本为Python3

$ python --version
Python 3.8.4        <-- All good, we have a 3.x version

创建/激活一个虚拟环境 - 基于Unix的系统

$ virtualenv env
$ source env/bin/activate  

对于Windows,语法略有不同

$ virtualenv env
$ .\env\Scripts\activate

安装Django

$ pip install django

创建一个新的Django项目

$ mkdir django-create-model
$ cd django-create-model

在新目录内,我们将调用startproject 子命令。

$ django-admin startproject config .

注意:考虑到命令末尾的.

设置数据库

$ python manage.py makemigrations
$ python manage.py migrate

启动应用程序

$ python manage.py runserver 
$
$ # Access the web app in browser: http://127.0.0.1:8000/

这时我们应该在浏览器中看到默认的Django页面。

Django - Default Project Page.

创建一个新的Django应用程序

$ python manage.py startapp sample

可视化默认的SQL设置-config/settings.py

# File: config/settings.py (partial content)
...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
...

sample 应用程序中定义一个新的模型 Books 。下面的修改应该被添加到sample/models.py

# File: sample/models.py

from django.db import models                       

class Book(models.Model):                                 # <- NEW
    title            = models.CharField(max_length=100)   # <- NEW 
    author           = models.CharField(max_length=100)   # <- NEW
    publication_date = models.DateField()                 # <- NEW 

更新项目配置以使用新的模型 - 在项目配置中必须将sample 应用程序添加到INSTALLED_APPS 部分。

# File: config/settings.py (partial content)
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'sample'                        # <- NEW 
]
...

提示- 为了快速检查最新的变化,我们可以运行check 子命令。

$ python manage.py check
System check identified no issues (0 silenced).  

生成SQL代码

$ python manage.py makemigrations  # generate the SQL code
Migrations for 'sample':
  sample\migrations\0001_initial.py
    - Create model Book

在数据库中应用变化

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sample, sessions
Running migrations:
  Applying sample.0001_initial... OK

通过CLI使用该模型

一旦模型被创建,我们可以通过Django shell来使用它

$ python manage.py shell
>>> 
>>> from sample.models import Book     # import the Book model in our context
>>> from django.utils import timezone  # used to provide the value for publication_date
>>>
>>> book1 = Book(title='The Adventures of Tom Sawyer', author='Mark Twain', publication_date=timezone.now() )
>>> book1.save()                       # save the new book

列出所有书籍(使用CLI)

$ python manage.py shell
>>> 
>>> from sample.models import Book
>>> Book.objects.all()
<QuerySet [<Book: Book object (1)>]>

我们可以看到我们的新书被查询到了。让我们改进描述该对象的信息。

Django模型--添加对象的文本表述

为了实现这个目标,我们应该为Book 模型定义__str__() 方法。

# File: sample/models.py

from django.db import models                       

class Book(models.Model): 
    title            = models.CharField(max_length=100) 
    author           = models.CharField(max_length=100)
    publication_date = models.DateField() 

    def __str__(self):       # <- NEW
        return self.title    # <- NEW

让我们重新启动Django控制台并检查结果。

$ python manage.py shell
>>> 
>>> from sample.models import Book
>>> Book.objects.all()
<QuerySet [<Book: The Adventures of Tom Sawyer>]>

通过管理部分使用该模型

Django开箱即有一个admin 部分,允许我们轻松地管理项目中定义的所有模型。
为了在管理控制台中管理Book ,我们需要创建一个superuser (也就是管理员),然后在register ,使Book ,以便在管理区中可见。

创建超级用户

$ python manage.py createsuperuser
sername (leave blank to use 'sm0ke'): admin
Email address: admin@appseed.us
Password: 
Password (again):
Superuser created successfully.

注册Book 模型,使其在admin 部分可见 - 按以下方式编辑sample/admin.py

# File: sample/admin.py

from django.contrib import admin

from .models import Book        # <- NEW

admin.site.register(Book)       # <- NEW

以管理员身份认证 -http://localhost:8000/admin/

在这一点上,我们应该在用户界面中看到Books 模型,并且能够执行CRUD操作。

Create Django Model - Admin Interface.

创建Django模型--列出模型项目

Create Django Model - List Model Items.

Django创建模型--编辑记录

image

**谢谢你的阅读!**欢迎在评论区留言。

更多Django资源

  • 阅读更多关于Django的信息(官方文档)
  • 使用可开发的Django启动器快速启动一个新项目