Python中使用Django开发的仿知乎网站,请各位大佬给点意见
当时开始学编程, 从 python 开始入门, 也没什么好的点子, 就仿知乎试着做练手, 当时没什么数据库基础, crud 全是 django orm 完成的, 也不知道日志的重要性, 也没有日志. 今天心血来潮把部署后使用 gmail 一直不能发送邮件的问题解决了.
网站: https://taoing.pythonanywhere.com/
github: https://github.com/taoing/zhihuer
Python中使用Django开发的仿知乎网站,请各位大佬给点意见
不错哦
这个项目挺有意思的,用Django做知乎这种内容社区确实很合适。核心架构上,你得把几个主要模型设计好:
- 用户系统:直接用Django自带的
User模型扩展,加个Profile表存头像、简介这些。 - 内容模型:
Question(问题)、Answer(回答)、Comment(评论)这三个是主干。记得设置好外键关联和级联删除。 - 互动功能:
Vote(点赞/反对)单独建表,用GenericForeignKey实现多模型关联,这样问题和回答都能用同一套投票逻辑。
给你个核心模型的代码示例:
# models.py
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
class Question(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='answers')
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
is_accepted = models.BooleanField(default=False)
class Vote(models.Model):
VOTE_CHOICES = ((1, 'Upvote'), (-1, 'Downvote'))
user = models.ForeignKey(User, on_delete=models.CASCADE)
vote_type = models.SmallIntegerField(choices=VOTE_CHOICES)
# 通用外键,可以关联到Question或Answer
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
class Meta:
unique_together = ['user', 'content_type', 'object_id'] # 防止重复投票
前端展示用Django模板就行,复杂交互可以加点JavaScript。分页用Django的Paginator,搜索用Q对象做多字段查询。
路由设计保持RESTful风格,比如/question/<id>/显示问题,/question/<id>/answer/提交回答。用户认证用Django自带的LoginView、LogoutView,再配合@login_required装饰器保护需要登录的视图。
总结:先把核心模型和基础功能跑通,再慢慢加特性。
有点慢 打开要一分钟
之前你不是在学 flask 吗?怎么这么快就转到 django 了。
很棒
没有意见!有就是牛逼!
flask 没有怎么学, 就是看了一下
其实里面代码写的一团糟…
不错了 楼主半年就做的这么好了啊
厉害啊楼主
没有,有就是牛逼
牛逼…
顺便你 setting 里面暴露密码了…
ck 编辑器你咋集成到外面去的…之前按着教程折腾了下,发现是弄到 admin 管理去的…
现在只能使用一个 Markdown 编辑器…
配置里那个没用的数据库密码忘记删了
ckeditor 的话在前端配置的, 看看文档就知道怎么回事
楼主,你的验证码用的什么的。
不错,要是有设计文档和数据库 pdm 就更好了
点击“查看源代码”,除了前端代码以外,看不到没有任何 python 代码,对用户来说是绝对闭源绝对无法破解的,挺好。
前端怎么搞的啊
膜拜,我在学用 react 和 django 搭网站,这下正好看看楼主怎么建的
求求说厉害的别舔了
说厉害的这是在捧杀?
说真的不怎么样,去看看 zol 问答吧,仿的比你好多了
楼主是全部代码自己写的。还是看视频学的写的
用的 django-simple-captcha
都是自己写的
那你确实厉害,你直接看官方文档学的吗?还是看书
大神,求带!
等等,仿知乎的话不应该用 tornado 吗
谢谢楼主分享…
楼主有没什么群麻烦 pm 一个学一下啊
知呼开发者看到要慌了
你自己都没有时间去改进,怎么还敢指望大佬们来给你提意见呢?大佬们的时间可比我等菜鸟值钱的多了。
/admin
前端是 bootstarp 默认主题 copy and paste
UI 挺不错的
做钓鱼可以哦
不错不错,已 start。年后可能要做一个真实的项目,也是准备仿照知乎这种消息流模式的,到时看你的代码学习下。我准备前端 react,后端 python 还是 java 没想好。
挺好的,加油
不错,我当时学也才做个博客
最新一条太真实了。。。
大佬说的是…
你基础比我好多了,写起来应该轻松。我写的时候前端写个 jquery 都要找文档半天,就会点刚学的 python,我写的你就看看就好。建议用 java 做好,楼主写好后顺便艾特我下,学习下
最新一条真实得令人害怕
说起知乎 我以前也写过一个 17 年初的时候 thinkPhp+vue
正文字号 14px 还加了 1px 的 letter-spacing,会让人分不清添加的空格是否有效,特别是对于那些不爱使用标点的人。
问题都很好,就是没有实在的回答!
我用谷歌浏览器,打开比真知乎快啊 0.0
有点不敢相信这是 django2 的版本写的,不过没关系,慢慢折腾吧
没有,比知乎更自由。牛逼。
楼主已经工作了吗



,