【问题标题】:global name 'reverse' is not defined未定义全局名称“reverse”
【发布时间】:2015-08-08 21:50:49
【问题描述】:

我正在使用 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 的内置函数。你在某个地方定义了一个吗?还是希望进口一个?
  • 追溯在哪里?令人反感的代码?
  • 大概这应该是 Django reverse 函数,如果您的模块作为 Django 视图加载,则您可以免费获得该函数,但如果您以其他方式导入或运行它,则不是。

标签: python django paypal django-paypal


【解决方案1】:

需要导入函数reverse:

from django.core.urlresolvers import reverse

您可以阅读更多关于它的信息here。它是 django 特有的,但看起来你无论如何都在尝试构建一个 URL,所以它可能就是你想要的。

对于 Django > 2.0

from django.urls import reverse

【讨论】:

  • 就是这样!谢谢!!
【解决方案2】:

在 Django2.0 中:

from django.urls import reverse

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:

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

        from django.core.urlresolvers import reverse
        

        【讨论】:

          【解决方案6】:

          --在models.py中使用这段代码......

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 您的答案必须经过格式化才能理解。喜欢问题然后解决。谢谢
            猜你喜欢
            • 2018-05-04
            • 2015-12-22
            • 2014-04-18
            • 2011-04-27
            • 2013-09-04
            • 2015-02-26
            • 2016-09-11
            • 1970-01-01
            相关资源
            最近更新 更多