1、项目说明
基于python+Django+Mysql的新闻发布系统项目实战
项目需要安装pycharm专业版以及MySQL环境(环境搭建和破解可以看我的B站里的视频有讲解)
- 首先需要创建数据库数据库名字叫做 db_newswebsite
- 运行sql导入数据或者也可以直接用命令生成(视频有讲解)
- 需要安装一下下面的模块(如果运行提示有模块未安装,安装一下即可,命令同下,改一下模块名即可)
项目需要安装 Django、PyMySQL及其附带的其他一些模块
- Django==3.2.17
- PyMySQL==0.9.3
安装命令如下:
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django(替换模块名)
管理员账户:bhml 123456
2、项目主要技术
-
python编程技术
-
Django框架技术
-
MySQL数据库技术
-
html,css,js编程
3、项目结构
-
news 主模块(项目的配置文件、路由)
-
newswebsite 项目功能实现
-
static 静态文件文件夹(css,js)
-
templates 前端html文件
-
upload 存放上传的头像,新闻图像文件
-
manage.py 程序的入口
4、项目主要功能
-
用户登录注册
-
用户对新闻查看与评论
-
管理员对新闻的管理
-
新闻的展示,推荐
5、部分源码
models.py
from django.db import models
from django.contrib.auth.models import User
from django.utils.timezone import now
# 分类表
class Category(models.Model):
name = models.CharField(max_length=40, null=False, verbose_name="分类名") # 分类名
def __str__(self):
return self.name
# 修改显示的表的名字
class Meta:
# 给模型类起一个更可读的名字
verbose_name = '新闻分类'
# 模型的复数形式
verbose_name_plural = '新闻分类信息表'
# pass
# 文章表
class Article(models.Model):
title = models.CharField(max_length=100, null=False, verbose_name="标题") # 标题
intro = models.CharField(max_length=1000, verbose_name="导语") # 导语
abstract = models.TextField(verbose_name="摘要")
category = models.ForeignKey(Category, related_name="cate", on_delete=models.CASCADE,
verbose_name="分类") # 连接分类表的外键,多对一关系
content = models.TextField(null=False, verbose_name="内容") # 内容
publish_time = models.DateTimeField(null=False, default=now, verbose_name="发布时间") # 发布时间
image = models.FileField(upload_to='article_image', verbose_name="图片") # 文章配图
author_name = models.CharField(max_length=100, null=False, verbose_name="作者") # 作者名字
author_avatar = models.FileField(upload_to='author_avatar', verbose_name="作者头像") # 作者头像
author_desc = models.CharField(max_length=100, null=False, verbose_name="作者签名") # 作者签名
def __str__(self):
return self.title # 在后台中以文章标题显示
# 修改显示的表的名字
class Meta:
# 给模型类起一个更可读的名字
verbose_name = '文章'
# 模型的复数形式
verbose_name_plural = '文章信息表'
# 精选文章
class Best(models.Model):
select_article = models.ForeignKey(Article, related_name='select_article', on_delete=models.CASCADE,
verbose_name="精选文章") # 被精选的文章
SELECT_REASON = (
('今日热闻', '今日热闻'),
('首页推荐', '首页推荐'),
('小编推荐', '小编推荐')
)
select_reason = models.CharField(choices=SELECT_REASON, max_length=50, null=False, verbose_name="推荐") # 精选的理由
def __str__(self):
return self.select_article.category.name + '-' + self.select_reason + '-' + self.select_article.title
# 修改显示的表的名字
class Meta:
# 给模型类起一个更可读的名字
verbose_name = '精选文章'
# 模型的复数形式
verbose_name_plural = '精选文章信息表'
# 用户信息表
class UserProfile(models.Model):
belong_to = models.OneToOneField(to=User, related_name="profile", on_delete=models.CASCADE,
verbose_name="用户") # 所属用户
avatar = models.FileField(upload_to='avatar', verbose_name="用户头像") # 用户头像
def __str__(self):
return self.belong_to.username
# 修改显示的表的名字
class Meta:
# 给模型类起一个更可读的名字
verbose_name = '用户'
# 模型的复数形式
verbose_name_plural = '用户信息表'
# 评论表
class Comment(models.Model):
belong_article = models.ForeignKey(Article, related_name='article', on_delete=models.CASCADE,
verbose_name="文章") # 评论所属的文章
belong_user = models.ForeignKey(User, related_name='user', on_delete=models.CASCADE, verbose_name="评论者") # 评论者
words = models.CharField(max_length=200, null=False, verbose_name="评论内容") # 评论内容
created = models.DateTimeField(null=False, default=now, verbose_name="评论时间") # 评论时间
def __str__(self):
return self.belong_user.username + ': ' + self.words
# 修改显示的表的名字
class Meta:
# 给模型类起一个更可读的名字
verbose_name = '评论'
# 模型的复数形式
verbose_name_plural = '评论信息表'
# python manage.py makemigrations
# python manage.py migrate
# python manage.py createsuperuser
6、运行截图
7、项目总结
本项目是一个非常适合练手作为大作业的项目,对我们的Django框架技术的提升有很大的帮助,推荐大家学习研究这个项目,搞懂其中的原理流程以及知识点非常关键。
项目资料截图:
资料获取地址:https://h5.m.taobao.com/awp/core/detail.htm?ft=t&id=705283106786
B站视频讲解地址:https://www.bilibili.com/video/BV1Ns4y1o7oZ/
注:其他问题请参看视频讲解,都有介绍,一定要认真看完哦!
代码编写、视频录制不易,感谢您的支持,祝您学习愉快!