创建评论模块
基本上一个app需要做的几个套路
创建app
在配置文件中的INSTALL_APPS这个列表中写app的名字
在app中创建urls.py的路由文件,这个路由文件必须有一个叫做urlpatterns列表,django会在这个列表中查找url
在总路由文件项目根目录下的/urls.py中进行路由分发
创建app的数据模型,在app/modles.py中书写代码,继承models.Model,就可以使用django的ORM实现对数据库的操作了
加入admin的管理后天,就需要在app/admin.py中书写代码,注册
优化admin管理后天的展示,就需要在app/apps.py以及app/__init__.py书写代码
单独创建一个评论模块来实现评论功能
创建评论的App
workon wsl # 进入虚拟环境
cd blog/blog/apps # 切换到apps的路径之下
python ../../manage.py startapp comment # 创建comment模块
将comment这个app加入到INSTALLED_APPS
# blog/blog/settings/dev.py
INSTALLED_APPS = [
...
'comment',
]
创建commmet的路由文件,在apps/comment/路径下创建urls.py路由文件
# blog/blog/apps/comment/urls.py
from django.urls import path
from . import views
app_name = 'comment'
urlpatterns = [
]
在总路由文件中加入comment的url
# blog/blog/urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf.urls.static import static
from django.conf import settings
from articles.views import index
urlpatterns = [
path('',index,name='index'),
path('admin/', admin.site.urls),
# 进行路由分发
path('user/',include('user.urls')),
path('password-reset',include('password_reset.urls')),
path('',include('articles.urls')),
path('',include('comment.urls')), # 新增这一条路由分发
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
设计数据模型
在/apps/commnet/models.py文件中添加如下代码:
from django.db import models
from user.models import BaseModel,User
from articles.models import Articles
# 设计评论的数据模型 models BaseModel
class Comment(BaseModel): # 继承BaseModel来实现软删除
# 评论内容
body = models.TextField(verbose_name='评论内容')
# 这条评论是评论哪篇文章的? 评论和文章 评论是多 文章是1 外键字段在评论表上
article = models.ForeignKey(Articles,on_delete=models.CASCADE)
# 这条评论是谁写的? 评论和用户 评论是多 用户是1 外键字段在评论表上
user = models.ForeignKey(User, on_delete=models.CASCADE)
class Meta:
db_table = 'blog_comment' # 自定义表名
verbose_name = '评论'
verbose_name_plural = verbose_name
执行数据迁移命令
python manage.py makemigrations
python manage.py migrate
将评论App加入admin后台管理
编写admin.py文件(/blog/apps/comment/admin.py)
from django.contrib import admin
from comment.models import Comment
# 编写类加入admin管理后台
class CommentAdmin(admin.ModelAdmin):
# 展示哪些字段
list_display = ['article','user','body','create_time']
# 可以通过哪些字段来搜索
# 搜索字段中用到的字段是外键字段的话 会报错,需要用__来进行跨表
search_fields = ['body','user__username','artilce__title']
# 将CommentAdmin 注册进admin管理后台
# admin.site.register(数据模型类,继承了ModelAdmin的类)
admin.site.register(Comment,CommentAdmin)
对admin管理后台中的显示做一些优化
# blog/blog/apps/comment/apps.py
from django.apps import AppConfig
class CommentConfig(AppConfig):
name = 'comment'
verbose_name = '评论功能' # 新增这行代码 让admin管理后台显示中文
告诉Django做了这个设置
# blog/blog/apps/comment/__init__.py
default_app_config = 'comment.apps.CommentConfig'
# 配置让django的admin管理后台知道我的更改
新增评论的功能
写