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相关资源:
- 修正model属性:将
model= AccountsExpense改为model= AccountsRevenue - 修正form_class属性:将
form_class=AccountsExpenseForm改为form_class=AccountsRevenueForm - 修正success_url:将跳转目标改为Revenue列表页,比如
reverse_lazy('dashboard:revenues') - 检查模板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
相关产品推荐
相关产品推荐

