当先锋百科网

首页 1 2 3 4 5 6 7

下面所有内容来自《Python编程:从入门到实践》,如有侵权请联系

一、创建 Django 项目

下面都是我试用过的命令,非常顺利,如果遇到麻烦,请参考大佬文章:
https://blog.csdn.net/qq_43192337/article/details/124611507

创建一个文件 learning_log

进入该文件后,执行下面语句,来创建虚拟环境

python -m venv ll_env
运行了模块venv,并使用它来创建一个名为ll_env的虚拟环境

继续,激活虚拟环境

ll_env\Scripts\activate

关闭虚拟环境

deactivate

在虚拟环境汇中,安装Django

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==2.2.8

在Django中创建项目

django-admin.py startproject learning_log .

创建数据库

python manage.py migrate

在虚拟环境中启动服务

python manage.py runserver

启动后浏览器中

http://localhost:8000/
或者 http://127.0.0.1:8000/

成功!
在这里插入图片描述

二、创建应用程序

老规矩,附上大佬文章,感谢帮助:
https://blog.csdn.net/qq_43192337/article/details/124627877?spm=1001.2014.3001.5502

在保证启动服务的同时,打开另外cmd窗口,激活虚拟环境,新增 learning_logs 文件夹

ll_env\Scripts\activate
python manage.py startapp learning_logs

在这里插入图片描述
最重要的文件是models.py、admin.py和views.py。使用 models.py 来定义程序中管理的数据
在这里插入图片描述
每当需要修改该项目管理的数据时,都采取如下三个步骤:
修改models.py;对 learning_logs调用 makemigrations;让Django迁移项目

2.1 定义模型

在 models.py 中

from django.db import models
class Topic(models.Model):
    # 用户学习的主题
    # 需要存储少量的文本,如名称、标题或城市时,可使用CharField
    text = models.CharField(max_length=200)
    # DateTimeField—记录日期和时间的数据
    # 实参auto_add_now = True表示每当用户创建新主题时属性自动设置成当前日期和时间。
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        # 返回模型的字符串表示
        return self.text

2.2 激活模型

要使用模型,必须让 Django 将应用程序包含到项目中
打开settings.py文件(learning_log/learning_log中)
在 INSTALLED_APPS 中添加 ‘learning_logs’
在这里插入图片描述
Django 修改数据库,用于存储与模型 Topic 相关的数据

python manage.py makemigrations learning_logs

在这里插入图片描述

应用这种迁移,让 Django 来修改数据库

python manage.py migrate

2.3 Django 管理网站

2.3.1 在 Django 中创建超级用户,并设置账号密码

python manage.py createsuperuser

2.3.2 向管理网站注册模型

Django自动在管理网站中添加了一些模型,如User和Group,但对于我们创建的模型,必须
手工注册
找到 learning_logs\admin.py ,向管理网站注册Topic

from django.contrib import admin
from learning_logs.models import Topic
admin.site.register()来让 Django 通过管理网站来管理模型
admin.site.register(Topic)

访问

http://localhost:8000/admin/

在这里插入图片描述
输入账号密码,可以进来
在这里插入图片描述
最后,Topics就是我们自己创建的模块啦,在 Topics 里面添加两个主题 Chess 和 Rock Climbing

2.3.3 定义模型Entry

要记录 Chess 和 Rock Climbing 的知识内容,需要为用户在笔记中添加的条目定义模型。每个条目都与特定主题相关联,关系为多对一,多个条目关联同一主题。

在 learning_logs\models.py 中

class Entry(models.Model):
    '''
    topic是一个ForeignKey实例(数据库外键,引用了数据库中的另一条记录)
    将每个条目关联到特定的主题,每个主题在创建时都分配一个ID
    '''
    topic = models.ForeignKey(Topic, on_delete = models.CASCADE)
    text = models.TextField()
    
    ''' 属性date_added让我们能够按创建顺序呈现条目,并在每个条目旁边放置时间戳 '''
    date_added = models.DateTimeField(auto_now_add=True)

    ''' Meta类存储用于管理模型的额外信息 '''
    class Meta:
        '''
        当Django在需要时使用Entries来表示多个条目。
        如果没有这个类,Django将使用Entrys来表示多个条目。
        '''
        verbose_name_plural = 'entries'
    '''__str__()告诉Django,呈现条目时显示哪些信息。这里只显示text的前50个字符。'''
    def __str__(self):
        return self.text[:50] + "..."

对于 verbose_name_plural 的 理解看上面链接,大佬的文章里面讲到了,很详细 ~

2.3.4 迁移模型 Entry

新模型,因此需要再次迁移数据库,重复上面 Topic 的三步(黄色标记部分)

python manage.py makemigrations learning_logs
python manage.py migrate

生成了一个新的迁移文件——0002_entry.py,它告诉Django如何修改数据库,使其能够存储
与模型Entry相关的信息
在这里插入图片描述

2.3.5 向管理网站注册 Entry

learning_logs\admin.py
在这里插入图片描述
成功!
在这里插入图片描述

三、认识 Django shell

交互式环境称为Django shell,是测试项目和排除其故障的理想之地

python manage.py shell

例如书上有这样一个例子:
返回一个列表
Ctrl + Z 退出 shell 会话
现在理解为什么shell是测试项目和排除其故障的场所了,利用python语法环境来直接检测。