'The view budget.views.budget didn't return an HttpResponse object. It returned None instead

I recently added second form to my project and im struggling to make it work. The form is named AddIncome and when i fill the form and submit nothing happen, i don't see the new income. When i fill the income from admin panel on model page everthing works. Don't know how to make it work from main page.

Here is my view (second form that i added is b_form, a_form is working):

from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from django.db.models import Sum
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils import timezone

from .forms import AddIncome, AddItem
from .models import BudgetData


@login_required
def budget(request):
    expense_items = BudgetData.objects.filter(user_expense=request.user).order_by(
        "-date_added"
    )

    # Setting up pagination per expense_items
    paginator = Paginator(expense_items, 10, 3)  # Show 10 items per page.
    page_number = request.GET.get("page")
    page_obj = paginator.get_page(page_number)

    total_cost = BudgetData.objects.filter(user_expense=request.user).aggregate(
        Sum("cost")
    )
    total_income = BudgetData.objects.filter(user_expense=request.user).aggregate(
        Sum("income")
    )

    # AddItem{category, cost} form
    a_form = AddItem()
    b_form = AddIncome()
    # form = AddItem(use_required_attribute=False) # ignores the field required text
    if request.method == "POST" and "expense" in request.POST:
        a_form = AddItem(request.POST)
        if a_form.is_valid():
            a_form = a_form.save(commit=False)
            a_form.user_expense = request.user
            a_form.date_added = timezone.now()
            a_form.save()
            return HttpResponseRedirect(reverse("budget"))
    if request.method == "POST" and "income" in request.POST:
        b_form = AddIncome(request.POST)
        if b_form.is_valid():
            b_form = b_form.save(commit=False)
            b_form.user_expense = request.user
            b_form.date_added = timezone.now()
            b_form.save()
            return HttpResponseRedirect(reverse("budget"))

    return render(
        request,
        "budget/budget.html",
        context={
            "user": request.user,
            "expense_items": expense_items,
            "total_cost": total_cost,
            "total_income": total_income,
            "a_form": a_form,
            "b_form": b_form,
            "page_obj": page_obj,
        },
    )

The template section:

<section>
  <div class="form-group">
    <form method="post">
      {% csrf_token %}
      {{ b_form|crispy }}
      <input name="income" type="submit" value="Add income">
    </form>
  </div>

  <div class="form-group">
    <form method="post">
      {% csrf_token %}
      {{ a_form|crispy }}
      <input name="expense" type="submit" value="Add item">
    </form>
  </div>

  {% for key, value in total_cost.items %}
  <h1>Total expenses: {{value|floatformat:2}} zł</h1>
  {% endfor %}
  {% for key, value in total_income.items %}
  <h1>Total income: {{value|floatformat:2}} zł</h1>
  {% endfor %}
  <h1>Diff: 500 zł</h1>
</section>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source