全局名称 'reverse' 未定义

global name 'reverse' is not defined

我正在使用 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,这是怎么回事?

reverse 不是 python 中的内置函数。据推测,它是某些 Web 框架中用于执行反向路由(从名称中获取 url 路径)的函数。 notify_url 必须是您应用程序中的 url,Paypal 将向其发送通知。

Python 中没有内置函数 reverse。 (有一个reversed,但我怀疑它是你想要的。)

Django 中一个reverse函数。但是您只能在作为 Django 视图或类似视图加载的代码中获得 Django 内置函数;如果您以其他方式导入或 运行 此代码,它将不存在。

因此,您可能在前面的说明中弄错了,实际上并没有创建视图。 (Django-PayPal 说明显然是为已经是经验丰富的 Django 开发人员的人编写的;如果您不了解基本的 Django 概念,您可能需要先完成 the tutorials。)

您需要导入函数reverse:

Django 2.0 及以上:

from django.urls import reverse

Django:

from django.core.urlresolvers import reverse

它是 django 特有的,但看起来您正在尝试构建一个 URL,所以它可能就是您想要的。

paypal-ipn 的 url 可能在 django-paypal 的 url 中定义。估计导入django的reverse就能解决这个问题

from django.core.urlresolvers import reverse

在 Django2.0 中:

from django.urls import reverse

我按照 "reverse not defined" 问题的解决方案,但我仍然有这个错误...我在我所有的 urls 文件中导入了 reverse,但没有效果...然后我将 reverse 导入 views.py 文件和我的本地服务器开始工作... 此消息的原始解决方案是正确的,但作者没有提到 post 导入反向的位置,所以我想可能我会完成原始答案......如果我错了,我道歉,但它为我工作...

--在models.py......

中使用此代码
from django.urls import reverse

def get_absolute_url(self):
    return reverse('url-name', kwargs={'pk':self.pk})