django 提交表单后 函数解析参数报错TypeError: not nonetype

这是views里的代码

from django.http import HttpResponse
from django.shortcuts import render
from .models import Item
# Create your views here.
def get_html(req):
    return render(req,"item.html")
def create_item(req):
    #解析参数
    params = req.POST
    name = params.get("i_name")
    barcode = params.get("i_barcode")
    cate_id = int(params.get("cate_id"))
    #创建数据
    item = Item.objects.create(
        name = name,
        barcode = barcode,
        category_id=cate_id
    )
    return HttpResponse("创建成功啦{}".format(item.name))

这是models的代码

from django.db import models

# Create your models here.
class Category(models.Model):
    name = models.CharField(
        max_length=30,
        verbose_name="分类名",
        db_column="cate_name" #改数据表字段的名字
    )
    cate_num = models.CharField(
        max_length=20,
        null=True,
        verbose_name="分类的编号"
    )
    create_time = models.DateTimeField(
        auto_now_add=True,
        verbose_name="创建时间"
    )
    update_time = models.DateTimeField(
        auto_now=True,
        verbose_name="修改时间"
    )
    class Meta:
        # 改数据表的名字
        db_table = "category"
    # PEP8


class Item(models.Model):
    name = models.CharField(
        max_length=40,
        verbose_name="商品名字"
    )

    barcode = models.CharField(
        max_length=13,
        verbose_name="条码",
        null=True
    )
    category = models.ForeignKey(
        Category,
        db_index=True
    )

图片说明图片说明

你使用的对象没有定义,检查一下是否有拼写错误。还有可能的原因是没有import被调用的模块而使用了模块的功能。你可以尝试一下print type(XXX) 应该就能发现问题了。

解决了吗??明显的问题是你没有获取到参数值,cate_id = int(params.get("cate_id")),你看看前台有没有传cate_id这个参数值,如果是form表单,那就看name属性有没有cate_id