4

Flaskでurl_forメソッドを使用しようとするとエラーが発生します。私はFlaskクイックスタートに従うだけなので、その原因はわかりません。私はPythonの経験が少しあるJavaの人で、Flaskを学びたいと思っています。

トレースは次のとおりです。

Traceback (most recent call last):
  File "hello.py", line 36, in <module>
    print url_for(login)
  File "/home/cobi/Dev/env/flask/latest/flask/helpers.py", line 259, in url_for
    if endpoint[:1] == '.':
TypeError: 'function' object has no attribute '__getitem__

私のコードは次のようなものです:

from flask import Flask, url_for
app = Flask(__name__)
app.debug = True

@app.route('/login/<username>')
def login(): pass

with app.test_request_context():
  print url_for(login)

Flaskの安定版と開発版の両方を試しましたが、それでもエラーが発生します。どんな助けでも大歓迎です!私の英語があまり上手ではない場合は、ありがとうございます。

4

1 に答える 1

5

ドキュメントによると、これは関数ではなく文字列を取りurl_forます。作成したルートにはユーザー名が必要なため、ユーザー名も指定する必要があります。

代わりにこれを行ってください:

with app.test_request_context():
    print url_for('login', username='testuser')

__getitem__文字列にはメソッドがありますが、関数にはないため、このエラーが発生します。

>>> def myfunc():
...     pass
... 
>>> myfunc.__getitem__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute '__getitem__'
>>> 'myfunc'.__getitem__
<method-wrapper '__getitem__' of str object at 0x10049fde0>
>>> 
于 2012-10-14T05:15:52.033 に答える