快捷搜索: 王者荣耀 脱发

从零开始的django开发生活之个人博客网站(1)

一、构建个人博客网站

1、简单构建

评论为什么独立出来?

评论比较通用,可以评论回复,应用于多个方面,不仅仅局限于博客

1)博客

博文、博客分类、博客标签

2)用户

功能模块约等于Django App

2、开启本地虚拟环境

隔开 python项目的运行环境

1)避免多个项目之间python库的冲突

2)完整便捷导出python库的列表

pip install virtualenv

3、virtualenv的使用方法

在自定义目录,cmd环境下:

创建:virtualenv<虚拟环境名称>

启动:Scriptsactivate

退出:deactivate

4、初步创建blog应用

cmd进入虚拟环境中,创建项目django-admin startproject mysite,

创建应用名称django-admin startapp blog

1)编写models

博文+博客分类

1.一篇博客一种分类

2.一篇博客多种分类

这里选择前面一种

from django.db import models
from django.contrib.auth.models import User


class BlogType(models.Model):
    type_name = models.CharField(max_length=15)

class Blog(models.Model):
    title = models.CharField(max_length=50)
    blog_type = models.ForeignKey(BlogType, on_delete=DO_NOTHING)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
    created_time = models.DateTimeField(auto_now_add=True)
    last_updated_time = models.DateTimeField(auto_now_add=True)

在blog–>models.py写入如上代码,其中Blog中blog_type和author分别关联到外部的两张表(注意这两张表前面都要有声明,所以blog_type才在前面)

2)数据迁移(系统模型)

编写models之后别忘记terminal中执行python manage.py migrate进行数据迁移,之后数据迁移之后数据库才会生成auth表,也就是系统管理员,这样才能创建超级管理员,但此时models中的数据并没有迁移,因为我们尚未在settings中注册app

3)创建超级管理员

python manage.py createsuperuser,依照步骤提示即可

4)注册app

打开项目文件夹mysite,进入settings.py,在INSTAllED_APP末尾加上blog

5)数据迁移(自定义模型)

python manage.py makemigrations(形成数据迁移文件)

python manage.py makemigrate(同步数据库)

6)定制后台

在admin.py中写入

from django.contrib import admin
from .models import BlogType, Blog

@register(BlogType)
class BlogTypeAdmin(admin.ModelAdmin):
    list_display = ("id", "type_name")

@register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ("title", "type_name", "author", "created_time", "last_updated_time")

后台界面如要改成中文,可在settings中LANGUAGE_CODE内容改为zh-Hans(意思就是中-汉简)

7)添加对象

随意添加几种type_name,但是在我们添加博客时却发现,后台显示的type_name并不时我们想要的,二是,object(1),object(2),诸如此类,这时候需要我们修改一下models,改变显示在前端的字符内容需要用到方法__str__,在model.py中写入

class BlogType(models.Model):
    type_name = models.CharField(max_length=15)

    def __str__(self):
        return self.type_name

class Blog(models.Model):
    title = models.CharField(max_length=50)
    blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING)
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
    created_time = models.DateTimeField(auto_now_add=True)
    last_updated_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "<Blog: %s>" % self.title

注意str前后分别有两个下划线

5、pip一键导出和安装(拓展)

pip freeze > requirements.txt

pip install -r requirements.txt

暂且记下,方便后面部署

ps:以上代码要能很熟练打出来,噼里啪啦一顿操作就能写出来那种!

经验分享 程序员 微信小程序 职场和发展