未定义全局名称“reverse”

Posted

技术标签:

【中文标题】未定义全局名称“reverse”【英文标题】:global name 'reverse' is not defined 【发布时间】: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 视图加载,则您可以免费获得该函数,但如果您以其他方式导入或运行它,则不是。 【参考方案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 文件和我的本地服务器开始工作... 该消息的原始解决方案是正确的,但作者没有提到在哪里发布导入反向,所以我想可能是我会完成原始答案......如果我错了,我很抱歉,但它对我有用。 ..

【讨论】:

您的答案必须经过格式化才能理解。喜欢问题然后解决。谢谢

以上是关于未定义全局名称“reverse”的主要内容,如果未能解决你的问题,请参考以下文章

python:NameError:全局名称'...'未定义[重复]

NameError:未定义全局名称“reduce”

在引发 ValidationError 期间“未定义全局名称'_'”

未定义全局名称“lats”

名称错误:未定义全局名称“BaseFunction”

熊猫不进口吗? 'NameError:未定义全局名称'pandas''