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

Django通用CreateView仅渲染按钮表单不显示问题求助

问题描述

我正在开发一款费用与收入追踪应用,使用Django通用视图实现增、查、删功能,Expense相关功能运行正常。但复制Expense代码实现Revenue功能时,AccountsRevenueCreate视图仅渲染提交按钮,表单内容不显示;更换、修改模板内容均无效果,即使移除表单代码也依旧只显示按钮。

相关代码

视图代码

class AccountsRevenueCreate(CreateView):
    template_name='dashboard/expense_create.html'
    model= AccountsExpense
    success_url = reverse_lazy('dashboard:expenses')
    form_class=AccountsExpenseForm

表单代码

class AccountsRevenueForm(forms.ModelForm):
    class Meta:
        model = AccountsRevenue
        fields = '__all__'

模板代码

<div class="row">
    <div class="col-12">
       <h5 class="form-title"><span>revenue Update 
     </span></h5>
    </div>
    <form method="post", action="{% url 
    'dashboard:revenue_add' %}">
    {% csrf_token %}
       
     {% comment %} {{ form|crispy }} {% endcomment %}     
     {{ form.as_p }} 

    <button type="submit" class="btn btn-primary col-12 col-sm-12">Save 
    </button>
   </form>
 </div>

URL代码

path ('accounts/revenues/create/', AccountsRevenueCreate.as_view(), name='revenue_create'),
解决方案

核心问题是AccountsRevenueCreate视图完全复用了Expense的配置,未切换到Revenue相关资源:

  1. 修正model属性:将model= AccountsExpense改为model= AccountsRevenue
  2. 修正form_class属性:将form_class=AccountsExpenseForm改为form_class=AccountsRevenueForm
  3. 修正success_url:将跳转目标改为Revenue列表页,比如reverse_lazy('dashboard:revenues')
  4. 检查模板action URL:模板中{% url 'dashboard:revenue_add' %}需与URL配置中的名称对应,若不存在该URL,可直接删除action属性,让表单默认提交到当前视图URL

修正后的视图代码:

class AccountsRevenueCreate(CreateView):
    template_name='dashboard/expense_create.html'  # 若需独立模板可改为revenue_create.html
    model= AccountsRevenue
    success_url = reverse_lazy('dashboard:revenues')
    form_class=AccountsRevenueForm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:05:26