全球名称'反向'没有定义

时间:2015-05-27 01:47:19

标签: python django paypal django-paypal

我使用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,该怎么回事?

7 个答案:

答案 0 :(得分:24)

您需要导入函数reverse

from django.core.urlresolvers import reverse

您可以阅读更多相关信息here。这是django特有的,但看起来你正试图建立一个URL,所以它可能就是你想要的。

对于Django> 2.0

from django.urls import reverse

答案 1 :(得分:5)

在Django2.0中:

from django.urls import reverse

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

因此,据推测,您之前在说明中遇到了错误,并且实际上并未创建视图。 (Django-PayPal指令清楚地写给已经是经验丰富的Django开发人员的人;如果你不了解基本的Django概念,你可能需要先完成the tutorials。)

答案 4 :(得分:1)

paypal-ipn的网址可能是在django-paypal的网址中定义的。我想导入django的反向将解决这个问题。

from django.core.urlresolvers import reverse

答案 5 :(得分:0)

我遵循此解决方案来解决“未定义反向”问题,但我仍然遇到这个错误...我在所有url文件中导入了反向,没有任何效果...然后我将反向导入了views.py文件和我的本地服务器开始工作... 此消息的原始解决方案是正确的,但作者没有提及将导入反向发布到何处,因此我认为可能是我将完成原始答案...如果某种方式我错了,我表示歉意,但这对我有用。 ..

答案 6 :(得分:0)

-在models.py中使用此代码...

from django.urls import reverse

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