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

Django用户登录验证及表单10个创建上限的错误页面不显示问题

Django表单创建上限后无法显示错误页面的修复方案

问题根源

你当前代码里定义了两个同名的create_form视图函数,第二个函数会直接覆盖第一个,导致用户认证检查的逻辑根本不会执行;同时原代码未将错误提示信息传递给错误模板,自然看不到预期的提示内容。

修复后的完整视图代码

把两段逻辑合并,同时添加错误提示的传递(这里用Django自带的messages框架,也可以直接通过上下文变量传递):

from django.shortcuts import render, redirect, reverse
from django.contrib import messages
from .models import Form

def create_form(request):
    # 先做用户认证校验
    if not request.user.is_authenticated:
        return redirect(reverse("login"))
    
    logged_in_user = request.user
    max_forms_per_creator = 10
    form_count = Form.objects.filter(creator=logged_in_user).count()

    if form_count >= max_forms_per_creator:
        # 传递错误提示信息
        messages.error(request, "你最多只能创建10个表单,无法继续创建")
        return render(request, "error/error.html")
    
    # 下方放置正常创建表单的逻辑(比如处理POST请求、渲染表单页面)
    return render(request, "forms/create_form.html")

错误模板显示提示

在error/error.html模板中加入提示渲染逻辑:

{% if messages %}
    {% for message in messages %}
        <div class="alert alert-danger">{{ message }}</div>
    {% endfor %}
{% endif %}

<!-- 若不用messages框架,也可以直接通过上下文传递 -->
<!-- 视图里改成:return render(request, "error/error.html", {"error_msg": "你最多只能创建10个表单"}) -->
<!-- 模板里对应写:<div class="error">{{ error_msg }}</div> -->

额外注意事项

  • 确保项目已启用messages框架(Django默认配置已包含,只需确认django.contrib.messages在INSTALLED_APPS中,且中间件列表里有django.contrib.messages.middleware.MessageMiddleware)
  • 检查错误模板的路径是否正确,确保error/error.html存在于你的模板目录下

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:05:07