Djangoに基づいて開発されたSkyNetブログ1-モデルの作成

3331 ワード

この時間は主にDjangoの開発を勉強しながら、自分のpython言語を強固にします.Djangoは強力なpython webフレームワークで、これに基づいてSkyNetブログシステムを開発しました.htmlもsemantic uiフロントエンドフレームワークを使用しています.興味があれば勉強してみてください.
djangoの基礎内容については、詳しくない学生は私の別のDjangoの初識を見ても、私が書いたより良いブログがたくさんあります.

models


まず最初にモデルを書くつもりです.Djangoではモデルと呼ばれています.モデルは単一のデータソースで、データベースのテーブルで簡単に理解できます.モデルには次のような基本的な概念があります.
  • modelsはjangoです.db.models.Modelのサブクラス
  • modelsの各属性は、このデータベースのフィールド
  • を表す.
  • Django自動生成データベースアクセスAPI
  • 3つのモデルを定義しました.まずBlogモデルです.具体的には以下のように定義されています.
    class Blog(models.Model):
        POST_STATUS = (
            ('P', ' '),
            ('D', ' '),
            ('E', ' '),
        )
    
        title = models.CharField(' ',max_length=150)
        body = models.TextField(' ')
        create_time = models.DateTimeField(' ',auto_now_add=True)
        modify_time = models.DateTimeField(' ',auto_now=True)
        status = models.CharField(' ',max_length=1, choices=POST_STATUS)
        views = models.PositiveIntegerField(' ', default=0)
        likes = models.PositiveIntegerField(' ', default=0)
        praises = models.PositiveIntegerField(' ', default=0)
        category = models.ManyToManyField('Category',blank=True)
        user = models.ForeignKey('User',verbose_name=' ')
    
        def __str__(self):
            return self.title
    
        class Meta:
            ordering = ('-create_time',)
    

    以下、一つ一つ説明します.
  • はtitleとbodyの2つのフィールドを定義し、違いは2つの異なるFieldを定義し、charFieldは短いテキストに適用され、TextFieldは長いテキストを格納するのに適用され、これは小さな違いである.
  • 定義でcreate_timeとmodify_timeはDateTimeFieldであり、このFieldにはDateとTimeが含まれており、対応するDateFieldとTimeFieldがあり、設定された属性auto_now_addは、最初に作成したときにフィールドを設定し、auto_nowはmodelsが保存されるたびにこの値を変更します.
  • statusは、指定した値
  • を選択できる属性を設定します.
  • categoryはManyToManyField、つまりマルチペアマルチを設定し、userは外部キーを設定します.

  • CategoryとUserを作成する必要があります.
    #models.py
    class Category(models.Model):
        names = models.CharField(' ',max_length=20)
        desc = models.TextField(' ',blank=True, null=True)
    
        def __str__(self):
            return self.names
    
    class User(AbstractUser):
        pass
    

    ここでUserはAbstractUserを引き継いでDjangoが持参したユーザーで便利です.
    最後にBlogCommentを定義し、ユーザーのコメントを記録します.
    #models.py
    class BlogComment(models.Model):
        user = models.ForeignKey('User', verbose_name=' ')
        post = models.ForeignKey('BlogPost', verbose_name=' ')
        comment = models.TextField(' ',blank=True, null=True)
        comment_time = models.DateTimeField(' ',auto_now_add=True)
    
        class Meta:
            ordering = ('-comment_time',)
    

    基本的にSkyNetブログのモデルはここまで作成すればいいので、最後にadminを構成して、adminで私たちのモデルを展示します.
    #admin.py
    class BlogUserAdmin(UserAdmin):
        pass
    
    class BlogAdmin(admin.ModelAdmin):
        list_display = ('title', 'create_time')
    
    admin.site.register(models.Post, BlogAdmin)
    admin.site.register(models.Category)
    admin.site.register(models.BlogComment)
    admin.site.register(models.User,BlogUserAdmin)
    

    ここでお話ししたいのは、私たちのUserがadminに表示されるようにsettingsが必要です.pyにAUTH_を追加USER_MODEL = 'blog.User'は、デフォルトのUserがカスタマイズしたUserです.もちろん、異なるフィールドを追加してUserを拡張することもできます.モデル作成はまずここまで紹介しましょう!上一篇:Djangoに基づいて開発したSkyNetブログ二——base Template