zoukankan      html  css  js  c++  java
  • Django搭建开发‘学习笔记’项目二(创建应用程序)

    Django项目由一系列应用程序组成,它们协同工作让项目成为一个整体。

    进入目录learn_log,并激活虚拟环境,再执行命令  python3 manage.py startapp learning_logs,创建应用程序

    命令startapp appname让Django搭建并创建应用程序所需的基础设施。执行后ls查看目录可看到其中新增了learning_logs文件夹。文件夹中最重要的文件为models.py、admin.py和views.py。其中models.py用来定义要在应用程序中管理的数据,后续介绍admin.py和views.py。

    一、定义模型

      打开文件models.py

      

      这里导入了模块models,并让我们创建自己的模型。模型告诉Django如何处理应用程序中存储的数据。在代码层面,模型就是一个类。

      如下表示用户将存储的主题的模型:

    from django.db import models
    
    
    class Topic(models.Model):
        """用户学习的主题"""
        text = models.CharField(max_length=200)
        date_added = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            """返回模型的字符类型"""
            return self.text
    
    # Create your models here.

      text属性是一个CharField---由字符组成的数据,即文本。需要存储少了文本,如名称、城市、标题时,可使用CharField。定义CharField属性时一定要告诉Django该在数据库中预留多少空间。

      date_added是一个DateTimeField---记录日期和时间的数据。使用实参auto_now_add=True,每当用户创建新主题时,Django都会将这个属性自动设置为当前日期和时间。

    二、激活模型

      要使用这些模型,必须让Django将前述应用程序包含到项目中。为此,打开settings.py(位于目录learning_log/learning_log中),其中以下部分告诉Django哪些应用程序被安装到了项目并将协同工作:

       将前面创建的应用程序learning_logs添加到这个列表

       通过将应用程序分组,在项目不断增大,包含更多应用程序是,有助于对应用程序进行跟踪。

      接下来需要修改数据库,使其能够存储与模型Topic相关的信息,为此,在终端窗口中执行命令:python3 manage.py makemigrations learning_logs

       makemigrations让Django确定如何修改数据库,使其能够存储与前面定义的新模型相关联的数据。输出表明Django创建了一个名为0001_initial.py的迁移文件,这个文件将在数据库中未模型Topic创建一个表。

      现在应用这种迁移,让Django修改数据库,执行命令:python3 manage.py migrate

       (每当需要修改管理的数据时,都需要采取这三个步骤,先修改models.py,然后对learning_logs调用makemigrations,然后让Django迁移项目)

      即修改后需要python3 manage.py makemigrations APP_NAME然后python3 manage.py migrate

    三、Django管理网站

      1、为网站创建超级用户

        执行命令python3 manage.py createsuperuser,输入用户名密码

      2、向管理网站注册模型

        Django自动在管理网站中添加了一些模型,如User和Group,对于我们创建的模型,需要手工进行注册。

        我们创建应用程序learning_logs时,Django在models.py所在目录中创建了一个名为admin.py文件,进行如下修改:

       models前面的句点是为了让Django在admin.py所在目录查找models.py。admin.site.register(Topic)让Django通过管理网站管理模型.

      访问localhost:8000/admin并输入刚刚创建的超级用户名和密码,就可以看到管理界面

       可以添加一个Chess主题

    四、定义模型Entry

      要记录学到的Chess知识,用户必须能够在学习笔记中添加条目。为此需要定义相关的模型,添加模型entry来显示主题下的条目:models.py下新增

    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

      添加新模型后需要再次迁移数据库

      依次执行命令:python3 manage.py makemigrations learning_logs、python3 manage.py migrate

    六、向管理网站注册Entry

      admin.py修改:

    from django.contrib import admin
    
    from .models import Topic, Entry
    
    admin.site.register(Topic)
    admin.site.register(Entry)
    
    # Register your models here.

      返回http://127.0.0.1:8000/admin/,将可添加知识,添加知识时选择对应主题

  • 相关阅读:
    flash做的按扭突然在页面上获取不到焦点之后
    收集 关于js的接口和 继承实现的代码例子
    从我丢失了;号 之后说开来去
    你真的会写JavaScript吗?
    json.js + jquery 在 ie7下 的 bug
    如何减少浏览器的repaint和reflow? [转]
    2012我们需要什么样的前的工程师
    JavaScript是否可实现多线程 — 深入理解JavaScript定时机制
    是时候了,我们需要前端架构师
    JS事件模型小结
  • 原文地址:https://www.cnblogs.com/huwang-sun/p/14932813.html
Copyright © 2011-2022 走看看