小编Bry*_*ffe的帖子

Django - 实现线程注释的正确方法

我正在使用Django开发一个博客网站.我的网站将允许用户评论我的任何博客文章,并相互回复,并将使用"线程评论"结构显示(我还没有启动用户功能,只是评论).我已经使用django-mptt(至少,现在)使用线程注释正常工作,但如果我正在采取的路线或步骤方向正确,我没有CLUE.几乎所有我经历过的教程只涉及到评论的表面,而不是在django中讨论线程评论.我想要一些经验丰富/专业的建议,告诉我可能做错了什么,以及我可以做得更好.我想要的最后一件事就是在经过数小时的工作后发现有一种更可接受的方式.

所以,这里列出了我需要明确的内容:

  1. Django的MPTT:

    • 我之所以选择这个,是因为我可以负担得起更慢 我的网站将有更多的读取而不是写入.这个选项对我的情况好吗?还有一个我不知道的更好的选择吗?
    • 如果我的网站最终有很多评论活动,我该怎么办?我该怎么做才能优化树木重组?或者我会更好地切换到邻接列表?
    • 我的MPTT评论模型有一个以自己为引用的ForeignKey(用于回复).这是正确的方法吗?或者我应该创建一个单独的回复模型?
    • 我在树中插入对另一个用户注释的回复的方式是使用mptt递归模板标记内的表单中的隐藏输入,并返回输入值(回复所针对的注释的id)并设置对该输入值的回复的父级.这是一种可接受的方法吗?
  2. 一个html页面上有多个表单

    • 我的博客文章html页面上有两个表单.一个评论博客文章,一个回复用户的评论.这被接受了吗?或者我应该为不同的表单创建不同的URL和查看功能?我是这样做的,因为我想要一个reddit风格的评论系统.我不希望它必须去另一个页面评论或回复.
    • 如果用户对我的博客帖子发表评论,则回复表单中的隐藏输入值不会返回任何内容,因此在尝试将其分配给views.py函数中的变量时会出现错误.我使用try/except块来修复它.这有更好的方法吗?

对不起,如果这些是菜鸟问题,我的帖子就这么久了.我只想用最好的方法为初学者使用现实的解决方案.任何反馈都会有帮助.谢谢!这是我的博客应用程序的代码.

models.py

    from django.db import models

    from mptt.models import MPTTModel, TreeForeignKey

    class Post(models.Model):
        """Blog post"""
        title = models.CharField(max_length=200)
        body = models.TextField()
       date_added = models.DateTimeField(auto_now_add=True)

        def __str__(self):
            return self.body[:50] + '...'

    class Comment(MPTTModel):
        """User comment"""
        post = models.ForeignKey(Post, related_name='comments',on_delete=models.CASCADE)
        parent = TreeForeignKey('self', null=True, blank=True, related_name='children',db_index=True, on_delete=models.CASCADE)

        user_comment = models.CharField(max_length=500, unique=True)
        date_added = models.DateTimeField(auto_now_add=True)
        # approved = models.BooleanField(default=False)

        class MPTTMeta:
            order_insertion_by = ['date_added']

        def __str__(self):
            return self.user_comment[:20]
Run Code Online (Sandbox Code Playgroud)

"已批准"已被注释掉,因为出于某种奇怪的原因我得到了"没有这样的列:已批准"错误.

forms.py

    from django …
Run Code Online (Sandbox Code Playgroud)

python django threaded-comments django-mptt

18
推荐指数
1
解决办法
1906
查看次数

Flask - Web 服务器不会在代码更改时重新加载

出于某种原因, 127.0.0.1:5000(port 5000) 卡在显示我未更新的旧文件中。

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Home page"

@app.route("/about")
def about():
    return "About page"

if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)

我改变了端口,它工作正常。但是,为什么当我更改和运行我的代码时 5000 没有更新?我检查了是否有多个进程正在运行,但没有一个。

老实说,这是一个菜鸟问题,但我似乎找不到其他遇到此问题的人。

python port flask

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×2

django ×1

django-mptt ×1

flask ×1

port ×1

threaded-comments ×1