Django - 基数为10的int()无效文字

0 投票
1 回答
730 浏览
提问于 2025-04-17 22:02

我有以下代码

模型:

class Item(models.Model):
    name = models.CharField(max_length=50)
    price = models.IntegerField()

视图:

def index(request):
    itemlist=Item.objects.all()
    return render(request,"items/index.html",{"itemlist":itemlist})

def details(request,item_id):
    item = get_object_or_404(Item,pk=item_id)
    return render(request,"items/details.html",{"item":item})

def new(request):
    if request.method == "POST":
        if "create" in request.POST:
            newitemform = NewItemForm(request.POST)
            if newitemform.is_valid():
                cd = newitemform.cleaned_data
                Item.objects.create(name=cd["name"],price=cd["price"])
                return HttpResponseRedirect(reverse("main:index"))

    else:
        newitemform = NewItemForm()

    return render(request,"tags/new.html",{"newitemform":newitemform})

网址:

urlpatterns = patterns("",
        url(r'^$',views.index,name="index"),
        url(r'^(?P<item_id>\w+)/$',views.details,name="details"),
        url(r'^new/$',views.new,name="new")
        )

表单:

class NewItemForm(forms.Form):
    name=forms.CharField(max_length=70)                     
    price=forms.IntegerField(min_value=0)

当我从'index'视图调用'new'视图时,我总是遇到这个错误:

在 /main/new/ 处出现 ValueError 错误:无法将 'new' 转换为整数。

我哪里出错了?

1 个回答

2

你可以把整个错误信息和追踪记录发出来……不过我猜可能是这样

url(r'^(?P<item_id>\w+)/$',views.details,name="details"), #<- is the problem
url(r'^new/$',views.new,name="new")

因为 "new" 这个词符合 "\w+" 的规则……你可以通过调换这两行代码来简单解决这个问题

url(r'^new/$',views.new,name="new")
url(r'^(?P<item_id>\w+)/$',views.details,name="details"), #<- is the problem

撰写回答