2

私はdjangoテンプレートにフォームを持っています。このフォームからデータを取得するビューで、エントリが「str」か「int」かを確認する必要があります。「str」の場合、エラーを発生させる必要があります。しかし、次を使用してエントリのタイプを確認すると:

pr = request.GET['pr no']
print "Type of PR:%s" % type(pr)

「pr」が文字列か整数かに関係なく、type() 関数は「unicode」を返します。どうすればいいですか?ありがとう

4

2 に答える 2

6

まあ、明らかに.GET['pr no']常にUnicodeオブジェクトを返します。

その文字列に整数が含まれているかどうかをテストできます。

if pr.isdigit():   # ASCII digits

また

if pr.isnumeric(): # also Unicode digits

または、次のことができます

try:
    int(pr)
except ValueError:
    print "PR is not an integer"

または有効な番号を確認します。

try:
    float(pr)
except ValueError:
    print "PR is not a number"
于 2012-09-28T06:39:06.993 に答える
1

HTML 形式では、テキスト入力ボックスを使用して整数値を入力します。そのため、Python ビューで取得する値は常に Unicode 文字列になります。

やりたいことを達成するために.isdigit()、ユニコード文字列のメソッドでテストできます。

例:

>>> x=u'99A'
>>> x.isdigit()
False
>>> x=u'99'
>>> x.isdigit()
True
>>> 
>>> x=u'A99'
>>> x.isdigit()
False
>>> 

django フォームを使用している場合は、適切なフォーム フィールド (おそらくIntegerField) を使用し、フォームを検証してエラーを取得することをお勧めします。

于 2012-09-28T06:40:22.663 に答える