首页 > 解决方案 > Django 错误 - 不支持的操作数类型 -: 'str' 和 'int'

问题描述

我有一个必须做一些数学运算的 Django 代码,但我不断收到以下错误:

- 不支持的操作数类型:“str”和“int”

这是代码:

from django.shortcuts import render
from django.http import HttpRequest

def index(request):
    nor = request.GET.get('nor')
    mc = request.GET.get('mc')
    repaired = request.GET.get('repaired')
    if isinstance(nor, int):
        if repaired == 'yes':
            if mc == 'yes':
                summary = nor*20000+30000
            else:
                summary = nor*20000
        else:
            if mc == 'yes':
                summary = nor*20000-20000
            else:
                summary = nor*20000-50000
    else:
        summary = 'Try again'
    return render(request, 'index.html', {'summary':summary})

这也是我想从中获取“nor”的 URL:

http://localhost:8000/mechanical/?nor=4&mc=yes&repaired=no&submit=Submit

标签: pythondjango

解决方案


查询字符串参数始终是字符串,您需要将它们转换为所需的类型。在这里,您需要将字符串转换为 int。

def index(request):
    nor = request.GET.get('nor')
    mc = request.GET.get('mc')
    if nor:   # check if parameter exist.
        nor = int(nor) 
    repaired = request.GET.get('repaired')
    if isinstance(nor, int):
        if repaired == 'yes':
            if mc == 'yes':
                summary = nor*20000+30000
            else:
                summary = nor*20000
        else:
            if mc == 'yes':
                summary = nor*20000-20000
            else:
                summary = nor*20000-50000
    else:
        summary = 'Try again'
    return render(request, 'index.html', {'summary':summary})

您可以在类型转换周围尝试捕获块来处理其他异常。


推荐阅读