【问题标题】:Django - invalid literal for int() with base 10Django - 以 10 为底的 int() 的无效文字
【发布时间】:2016-10-07 12:18:52
【问题描述】:

我有以下代码

型号:

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)

当我从“索引”视图调用“新”视图时,我不断收到错误消息:

/main/new/ 处的值错误 基数为 10 的 int() 的无效文字:'new'

我做错了什么?

【问题讨论】:

    标签: python django django-forms django-views


    【解决方案1】:

    你可以发布整个错误和回溯……但只是猜测

    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
    

    【讨论】:

    • 我解决了这个问题。您指出了正确的位置,但问题不在于;)。当我应该使用 \d+ 时,我使用了 \w+,因为该变量应该是一个 int,而不是一个字符串
    • 那么问题确实是……我认为你有充分的理由在那里使用字符串,只是假设 new 不是你想要的参数……我本可以猜到你想要一个 int 但那会直接取消你所拥有的,而我的回答保留了你的其余功能
    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 2017-05-18
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多