002_创建应用程序

 

/*
一: 应用程序: 
    1 创建程序
    2 注册程序
    3 定义模型 : topics 
    4 注册模型
    5 数据库迁移
    6 创建admin
二 定义模型
    1 定义模型 : Entry
    2 注册模型
    3 登录查看
*/

 

一: 应用程序:

  1 创建程序

1 : 输入命令: python manage.py startapp learning_logs

'''
python manage.py startapp learning_logs 在 Django 中的作用是创建一个新的应用(app)。

在 Django 中,一个项目(Project)可以包含多个应用(App),每个应用通常都包含一组独立的功能,比如用户认证、评论系统或者博客等。
这样的设计让代码更加模块化,可以方便地在多个项目之间复用代码。
'''

 

'''
命令会在当前项目的目录下创建一个名为 learning_logs 的新目录,这个目录结构如下:

__init__.py:一个空文件,告诉 Python 这个目录应该被视为一个 Python 包。
admin.py:一个用于定义 Django 管理界面的地方。
apps.py:应用的配置文件。
migrations/:存储 Django 数据库迁移文件的地方。
models.py:定义你的数据模型,即数据库的结构。
tests.py:应用的测试文件。
views.py:处理请求和响应的地方,即网页的逻辑。
'''

 

  2 注册程序

1 : 填写Code: "learning_logs",

注意不要忘记最后逗号。

 

  3 定义模型

# Create your models here.
class Topic(models.Model):
    ''' 用户学习的主题 '''
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add = True)

    def __str__(self):
        ''' 返回模型字符串 '''
        return self.text

 

'''
定义了一个数据模型 Topic。数据模型是 Django 的一个核心概念,它的主要作用是描述你的数据,并且定义了存储数据的格式和行为。

在这个 Topic 模型中:

1 text 是一个字符字段,可以存储最长为200的文本信息,用来记录用户学习的主题名称。
2 date_added 是一个日期时间字段,记录了主题被创建的时间。
3 auto_now_add=True 参数表示当用户创建一个新主题时,这个字段会自动设置为当前的时间。
4 __str__() 方法定义了当需要呈现模型实例的信息时,应该显示什么。在这里,我们让它返回存储在字段 text 中的字符串。
'''

 

'''
models.CharField(max_length=200) 是在定义一个 Django 数据模型字段。

1 CharField 是 Django 模型字段的一种类型,表示一个字符字段,用于存储短文本字符串或者字符数据。

2 max_length=200 参数定义了这个字符字段的最大长度为 200 个字符。这意味着在这个字段中,你可以存储最多 200 个字符的文本数据
'''

 

'''
models.DateTimeField(auto_now_add=True) 是 Django 中用来表示日期和时间的字段。

1 在 Django 的数据模型中,DateTimeField 用来存储日期和时间的数据。

2 参数 auto_now_add=True 是一个选项,当你设置为 True 的时候,它的意思是,当你创建一个新的记录(也就是在数据库中新增一行数据)的时候,
这个 date_added 字段会自动设置为当前的日期和时间。也就是说,你不需要手动去设置这个字段的值,Django 会自动帮你完成。
'''

 

  4 注册模型

from django.contrib import admin

# Register your models here.
from .models import Topic
admin.site.register(Topic)

 

from .models import Topic 是导入了当前应用下的 models.py 文件中定义的 Topic 数据模型。

admin.site.register(Topic) 是把 Topic 模型注册到 Django 的后台管理系统中。
注册后,你可以在 Django 的后台管理界面上看到 Topic 模型,并且可以进行增加、修改、删除等操作。

 

  5 数据库迁移

1 : 输入命令:  python manage.py makemigrations learning_logs

'''
含义: 创建对应的数据库迁移文件。

如果你新建了一个模型,Django 就会在数据库中创建一个对应的表;如果你修改了模型的字段,Django 就会修改数据库表的结构。

所以,每当你修改了模型后,都需要运行 python manage.py makemigrations 来创建迁移文件.
'''

 

1 : 输入命令:  python manage.py migrate

'''
执行数据迁移文件。
'''

 

  6 创建admin

1 : 输入命令:  python manage.py createsuperuser

'''
创建管理员账户
'''

 

1 : 输入地址:  http://127.0.0.1:8000/admin/

2 : 输入用户和密码。

 

1 : 可以看见创建的项目: LEARNING_LOGS

2 : 可以看见创建的模型: Topics 

 

二 定义模型

  1 定义模型 : Entry

# 定义模型
class Entry(models.Model):
    ''' 学到的有关某个主题的具体知识 '''
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add = True)

    class Meta:
        verbose_name_plural = 'entries'

    def __str__(self):
        ''' 返回模型的字符串表示 '''
        return f"{self.text[:50]}..."

 

'''
在 Entry 类中定义了三个字段:

1 topic 字段:它是一个 ForeignKey 类型,意味着每个 Entry 对象都关联着一个 Topic 对象。on_delete=models.CASCADE 表示当关联的 Topic 对象被删除时,
所有关联的 Entry 对象也会被自动删除。 2 text 字段:它是一个 TextField 类型,用于存储大量文本信息。 3 date_added 字段:它是一个 DateTimeField 类型,会自动设置为创建 Entry 对象的时间(只在对象首次创建时设定,之后不会再变)。auto_now_add = True 表示自动设置当前时间。 class Meta: 在这里定义了一些元数据。 verbose_name_plural = 'entries':这个选项是用来指定该模型的复数形式是什么。默认情况下,Django 会自动在模型名后面加一个 's' 来形成复数,
但有些情况下这样的规则不适用,比如这里的 "entry" 的复数形式应该是 "entries",而不是 "entrys",所以需要我们手动指定。 def __str__(self): 定义了当打印 Entry 对象时的输出格式。在这里,我们让它返回 text 字段的前 50 个字符,并在后面添加三个点 '...'。如果 text 字段的长度不足 50 个字符,
那么就返回 text 字段的全部内容。
'''

 

# 数据迁移
    1 输入命令: python manage.py makemigrations learning_logs
    2 输入命令: python manage.py migrate

 

  2 注册模型

from .models import Topic, Entry
admin.site.register(Topic)
admin.site.register(Entry)

 

  3 登录查看

1 : 输入地址:  http://127.0.0.1:8000/admin/

2 : 可以新创建的模型: Entry

 

 

  
posted @ 2023-06-05 14:56  火焰马  阅读(20)  评论(0编辑  收藏  举报