未定义全局名称“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:全局名称'...'未定义[重复]