web-dev-qa-db-ja.com

グローバル名 'reverse'が定義されていません

Django-Paypalライブラリを使用して、自分のサイトでPaypal支払いを使用しています。

example に続いて、Paypal_dictを設定し、フォームを追加しました。

Paypal_dict = {
        "business": settings.Paypal_RECEIVER_EMAIL,
        "amount": "10000000.00",
        "item_name": "name of the item",
        "invoice": "unique-invoice-id",
        "notify_url": "https://www.example.com" + reverse('Paypal-ipn'),
        "return_url": "https://www.example.com/your-return-location/",
        "cancel_return": "https://www.example.com/your-cancel-location/",

    }

ただし、エラーglobal name 'reverse' is not definedを使用していますPython 2.7.9、何が起こっているのですか?

10
Magic

関数reverseをインポートする必要があります。

from Django.core.urlresolvers import reverse

あなたはそれについてもっと読むことができます ここ 。これはDjangoに固有ですが、とにかくURLを作成しようとしているように見えるので、おそらくそれが必要です。

For Django> 2.0

from Django.urls import reverse
27
TankorSmash

django2.0で:

from Django.urls import reverse
6
user9686872

reverseはPythonの組み込み関数ではありません。おそらく、それは逆ルーティング(名前からURLパスを取得する)を行うためのいくつかのWebフレームワークの関数です。 notify_urlは、Paypalが通知を送信するアプリケーションのURLである必要があります。

1
singron

Pythonには組み込み関数reverseはありません。 (reversedがありますが、それがあなたの望むものではないかと思います。)

Djangoにはisa reverse 関数があります。ただし、Djangoビューなどとしてロードされるコードに組み込まれているのはDjangoです。このコードを他の方法でインポートまたは実行すると、 tが存在します。

したがって、おそらく、手順の早い段階で何か問題が発生し、実際にはビューを作成していません。 (Django-Paypalの説明は、経験豊富なDjango開発者;基本的なDjangoの概念を理解していない場合は、おそらく作業を行う チュートリアル 最初に。)

1
abarnert

Paypal-ipnのURLは、おそらくDjango-PaypalのURLで定義されています。 Djangoのリバースをインポートすることでこの問題は解決すると思います。

from Django.core.urlresolvers import reverse
1
Jey

この解決策に従って「リバースが定義されていません」という問題が発生しましたが、まだこの間違いがありました...すべてのURLファイルにリバースをインポートしても効果はありませんでした...次に、views.pyファイルにリバースをインポートしてローカルサーバーを起動しました動作する...このメッセージの元の解決策は正しいですが、作成者はインポートリバースを投稿する場所について言及していなかったので、元の回答を完成させるかもしれないと思いました...どういうわけか間違っている場合は、お詫びしますが、それは私のために働いた...

0
bugthefifth