13

我正在使用该django-paypal库在我的网站上使用 PayPal 付款。

按照示例,我设置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 的错误,这是怎么回事?

4

7 回答 7

44

您需要导入函数reverse

对于Django 2.0及更高版本:

from django.urls import reverse

对于较旧的Django

from django.core.urlresolvers import reverse

它是 django 特有的,但看起来你无论如何都在尝试构建一个 URL,所以它可能是你想要的。

于 2015-05-27T01:59:37.853 回答
7

在 Django2.0 中:

from django.urls import reverse
于 2018-05-29T18:18:13.937 回答
2

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

from django.urls import reverse

def get_absolute_url(self):
    return reverse('url-name', kwargs={'pk':self.pk})
于 2020-12-04T04:31:42.963 回答
1

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

于 2015-05-27T01:52:54.590 回答
1

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

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

所以,大概,您在说明的前面已经弄错了,实际上并没有创建视图。(Django-PayPal 说明清楚地为已经是经验丰富的 Django 开发人员编写的;如果您不了解基本的 Django 概念,您可能需要先完成教程。)

于 2015-05-27T01:55:49.617 回答
1

paypal-ipn 的 url 可能在 django-paypal 的 url 中定义。我猜想导入django的reverse会解决这个问题。

from django.core.urlresolvers import reverse
于 2015-05-27T02:01:19.250 回答
0

我按照这个解决方案来解决“反向未定义”问题,但我仍然有这个错误......我在我所有的urls文件中导入了reverse,没有效果......然后我将reverse导入views.py文件并启动了我的本地服务器工作......这个消息的原始解决方案是正确的,但作者没有提到在哪里发布导入反向,所以我想可能我会完成原来的答案......如果我错了,我很抱歉,但是它对我有用...

于 2020-04-09T11:16:28.770 回答