django - Bootstrap 4 选择表单字段不适用于 django
问题描述
我是 django 新手,并在 django 中使用 bootstrap4 表单。当我使用输入字段文本和日期 时,它可以正常工作并将数据保存到 django admin 但是如果我为类别添加选择,它不起作用并返回以下错误: ValueError at / The view app_budgetlist.views.home 没有返回HttpResponse 对象。它返回 None 。
我连续工作了 2 天,无法弄清楚出了什么问题!你能帮忙吗?[NB 更新了@Caleb Goodman 告诉我的代码仍然没有运气] 这是我的代码:
模型.py
from django.db import models
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class MonthlyBudget(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
budget_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)
表格.py
from django import forms
from .models import MonthlyBudget
class MonthlyBudgetForm(forms.ModelForm):
class Meta:
model = MonthlyBudget
fields = ['category', 'budget_amount']
视图.py
from django.shortcuts import render, redirect
from .models import Category, MonthlyBudget
from .forms import MonthlyBudgetForm
def home(request):
project = MonthlyBudget.objects.all()
categories = Category.objects.all()
if request.method == "POST":
form = MonthlyBudgetForm(request.POST or None)
if form.is_valid():
form.save()
return render(request, 'home.html', {'project':project, 'categories':categories})
else:
return render(request, 'home.html', {'project':project, 'categories':categories})
主页.html
<form class="form-inline" method="POST">
{% csrf_token %}
<input type="text" name="budget_amount" class="form-control mb-2 mr-sm-2" id="budget-amount" placeholder="Amount">
<div class="form-group">
<label for="category">Select Category</label>
<select id="category" class="taskCategory" name="category">
<option class="disabled" value="">Choose a category</option>
{% for category in categories %}
<option class="" value="{{ category.name }}" name="{{ category.name }}">{{ category.name }}</option>
{% endfor %}
</select>
</div>
<button type="submit" class="btn btn-primary mb-2">Add Project</button>
</form>
管理员.py
from django.contrib import admin
from .models import MonthlyBudget, Category
admin.site.register(MonthlyBudget)
admin.site.register(Category)
解决方案
保存表单后忘记返回响应:
def home(request):
project = MonthlyBudget.objects.all()
categories = Category.objects.all()
if request.method == "POST":
form = MonthlyBudgetForm(request.POST or None)
if form.is_valid():
form.save()
return render(request, 'home.html', {'project':project, 'categories':categories})
else:
return render(request, 'home.html', {'project':project, 'categories':categories})
推荐阅读
- python - 有人能告诉我为什么我得到“无”作为输出吗?
- ios - Flickr API 返回的农场值无效
- html - 如何在不使用表格的情况下将图像添加到 HTML/CSS 日历?
- javascript - 数组未清空
- sql - 如何在第二行sql server中传递第一行列值一些列?
- node.js - 将它们作为查询传递给model.find()时,如何忽略带有空字符串的值?
- java - 如何在 Excel 文件中添加新行?
- javascript - 在 javascript 迷宫中显示数组
- java - 使用不带 ssl 的 appassets.androidplatform.net(用于通过 http 发送 ajax 请求)
- laravel - 当我有大量数据时,为什么我的数据表会起作用?