You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django论坛发帖跳转错误及PlantPost不存在问题求助

问题根源

两个核心问题:URL命名空间缺失导致表单提交路由混淆,模板文件命名冲突导致Django加载了错误的模板;另外Comment模型存在重复字段问题。

解决步骤

1. 配置URL命名空间(根urls.py)

在项目根目录的urls.py中,给forum和greenhouse的路由添加命名空间,避免同名URL混淆:

from django.urls import path, include

urlpatterns = [
    # 其他路由...
    path('forum/', include(('forum.urls', 'forum'), namespace='forum')),
    path('greenhouse/', include(('greenhouse.urls', 'greenhouse'), namespace='greenhouse')),
]

2. 修复论坛模板的表单Action路由

  • forum/create_post.html:给create_post添加命名空间前缀,确保提交到论坛的路由:
{% extends "home.html" %}
{% block content %}
<h2>Create Post</h2>
<form action="{% url 'forum:create_post' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>
{% endblock %}
  • 你的create_comment.html已使用forum:create_comment,命名空间配置完成后即可正常生效。

3. 解决模板命名冲突

Django默认会在所有app的templates目录下查找模板,同名文件会导致加载错误。给每个app的模板创建子目录:

  • 将forum的模板移动到forum/templates/forum/目录下,例如forum/templates/forum/create_post.html、forum/templates/forum/create_comment.html
  • 修改forum views.py中的渲染路径,指定子目录:
# create_post视图
return render(request, "forum/create_post.html", {"form": form})

# create_comment视图
return render(request, "forum/create_comment.html", {"form": form, "post": post})

greenhouse的模板同理,放到greenhouse/templates/greenhouse/目录下,避免与forum模板冲突。

4. 修复Comment模型的重复字段

forum/models.py中Comment类定义了两次user字段,删除重复项,保留带related_name的版本:

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="forum_comments")

5. 优化视图的错误处理

在forum/views.py的create_comment视图中,用get_object_or_404替代get,避免因无效post_id抛出未捕获的异常:

from django.shortcuts import get_object_or_404

def create_comment(request, post_id):
    post = get_object_or_404(Post, id=post_id)
    # 后续逻辑不变...

验证

完成以上修改后:

  • 论坛发帖会提交到/forum/create_post/,不再跳转到温室页面
  • 评论提交会指向/forum/create_comment/<post_id>/,调用forum的create_comment视图,不会再触发greenhouse的PlantPost不存在错误

内容的提问来源于stack exchange,提问作者Teppie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:15:12