美文网首页
django | 01-构建博客目录

django | 01-构建博客目录

作者: mykgzy | 来源:发表于2019-10-14 21:33 被阅读0次

    创建blog

    进入到 manage.py 文件所在的目录(即项目根目录)下,运行 pipenv run python manage.py startapp blog 可建立一个 firstblog 应用^[https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial01/]。 创建完毕后可看到目录结构如下^[https://www.runoob.com/django/django-first-app.html]

    image

    ./这个目录为根目录,也是项目的容器。

    这一步只是创建了文件结构,但还没有向Django注册,在setting.py中修改INSTALLED_APPS设置

    创建数据库模型

    django 会把 Python 代码翻译成对应的数据库操作语言,因此我们可以不用直接写数据库的语法。

    模型

    每个模型都是一个python类,都继承于 django.db.models.Model。 我们编辑model都在firstblog/models.py中定义即可

    from django.db import models
    from django.contrib.auth.models import User
    
    # Create your models here.
    # 定义blog的分类
    class Category(models.Model):
        name = models.CharField(max_length=100)
    
    # 定义文章标签
    class Tag(models.Model):
        name = models.CharField(max_length=100)
    
    # 定义文章,主要有标题、正文、时间等
    class Post(models.Model):
        title = models.CharField(max_length=70)
        body = models.TextField()
        created_time = models.DateTimeField()
        modified_time = models.DateTimeField()
        excerpt = models.CharField(max_length=200, blank=True)
        category = models.ForeignKey(Category, on_delete=models.CASCADE)
        tags = models.ManyToManyField(Tag, blank=True)
        author = models.ForeignKey(User, on_delete=models.CASCADE)
    
    • 定义了一个名为Category的类,继承自models.Model类,且该类有个name属性
    • 定义了Tag类,有个name属性
    • 定义了Post类,有很多属性,其中blank=True表示允许空值。同时允许==一对一==的ForeignKey关联关系,以及==多对多==的ManyToManyField关联关系

    然后在项目根目录下运行pipenv run python manage.py makemigrationspipenv run python manage.py migrate来写入数据库

    django 通过检测应用中 migrations 目录下的文件,得知我们对数据库做了哪些操作,然后它把这些操作翻译成数据库操作语言,从而把这些操作作用于真正的数据库。
    若要查看具体数据库命令可以pipenv run python manage.py sqlmigrate firstblog 0001来查看

    setting.py显示数据库用的是sqlite3。数据库主要功能就是增删查改

    操作数据库

    pipenv run python manage.py shell打开交互shell

    >>> >>> from firstblog.models import Category, Tag, Post
    >>> c = Category(name='category Test') # 实例化
    >>> print(c)
    Category object (None)
    >>> c.save() # 存入数据库
    >>> t = Tag(name='tag test') #实例化
    >>> t.save() #存入数据库
    

    pipenv run python manage.py createsuperuser用于创建超级用户

    Tag.objects.all()Tag.objects.get()
    其中all会取出所有符合的,而get只会取1条

    1. get()
    2. 然后重新赋值
    3. 最后save()即可

    1. get()
    2. delete()即可

    相关文章

      网友评论

          本文标题:django | 01-构建博客目录

          本文链接:https://www.haomeiwen.com/subject/vtpdmctx.html