网站的功能模块:博客、评论、点赞、阅读、用户
评论为什么出来?
评论比较通用,可以评论回复,应用于多个方面,不仅仅局限于博客
博文、博客分类、博客标签
第三方登录(QQ/微博)
功能模块约等于Django App
隔开 python项目的运行环境
1)避免多个项目之间python库的冲突
2)完整便捷导出python库的列表
pip install virtualenv
创建:virtualenv<虚拟环境名称>
启动:Scripts\activate
退出:deactivate
cmd进入虚拟环境中,创建项目django-admin startproject mysite,
创建应用名称django-admin startapp blog
博文+博客分类
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才在前面)
编写models之后别忘记terminal中执行python manage.py migrate进行数据迁移,之后数据迁移之后数据库才会生成auth表,也就是系统管理员,这样才能创建超级管理员,但此时models中的数据并没有迁移,因为我们尚未在settings中注册app
python manage.py createsuperuser,依照步骤提示即可
打开项目文件夹mysite,进入settings.py,在INSTAllED_APP末尾加上blog
python manage.py makemigrations(形成数据迁移文件)
python manage.py makemigrate(同步数据库)
在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(意思就是中-汉简)
随意添加几种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前后分别有两个下划线
pip freeze > requirements.txt
pip install -r requirements.txt
暂且记下,方便后面部署
ps:以上代码要能很熟练打出来,噼里啪啦一顿操作就能写出来那种!
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务