全局名称 'reverse' 未定义
global name 'reverse' is not defined
我正在使用 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
不是 python 中的内置函数。据推测,它是某些 Web 框架中用于执行反向路由(从名称中获取 url 路径)的函数。 notify_url
必须是您应用程序中的 url,Paypal 将向其发送通知。
Python 中没有内置函数 reverse
。 (有一个reversed
,但我怀疑它是你想要的。)
Django 中是一个reverse
函数。但是您只能在作为 Django 视图或类似视图加载的代码中获得 Django 内置函数;如果您以其他方式导入或 运行 此代码,它将不存在。
因此,您可能在前面的说明中弄错了,实际上并没有创建视图。 (Django-PayPal 说明显然是为已经是经验丰富的 Django 开发人员的人编写的;如果您不了解基本的 Django 概念,您可能需要先完成 the tutorials。)
您需要导入函数reverse
:
Django 2.0 及以上:
from django.urls import reverse
老 Django:
from django.core.urlresolvers import reverse
它是 django 特有的,但看起来您正在尝试构建一个 URL,所以它可能就是您想要的。
paypal-ipn 的 url 可能在 django-paypal 的 url 中定义。估计导入django的reverse就能解决这个问题
from django.core.urlresolvers import reverse
在 Django2.0 中:
from django.urls import reverse
我按照 "reverse not defined" 问题的解决方案,但我仍然有这个错误...我在我所有的 urls 文件中导入了 reverse,但没有效果...然后我将 reverse 导入 views.py 文件和我的本地服务器开始工作...
此消息的原始解决方案是正确的,但作者没有提到 post 导入反向的位置,所以我想可能我会完成原始答案......如果我错了,我道歉,但它为我工作...
--在models.py
......
中使用此代码
from django.urls import reverse
def get_absolute_url(self):
return reverse('url-name', kwargs={'pk':self.pk})
我正在使用 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
不是 python 中的内置函数。据推测,它是某些 Web 框架中用于执行反向路由(从名称中获取 url 路径)的函数。 notify_url
必须是您应用程序中的 url,Paypal 将向其发送通知。
Python 中没有内置函数 reverse
。 (有一个reversed
,但我怀疑它是你想要的。)
Django 中是一个reverse
函数。但是您只能在作为 Django 视图或类似视图加载的代码中获得 Django 内置函数;如果您以其他方式导入或 运行 此代码,它将不存在。
因此,您可能在前面的说明中弄错了,实际上并没有创建视图。 (Django-PayPal 说明显然是为已经是经验丰富的 Django 开发人员的人编写的;如果您不了解基本的 Django 概念,您可能需要先完成 the tutorials。)
您需要导入函数reverse
:
Django 2.0 及以上:
from django.urls import reverse
老 Django:
from django.core.urlresolvers import reverse
它是 django 特有的,但看起来您正在尝试构建一个 URL,所以它可能就是您想要的。
paypal-ipn 的 url 可能在 django-paypal 的 url 中定义。估计导入django的reverse就能解决这个问题
from django.core.urlresolvers import reverse
在 Django2.0 中:
from django.urls import reverse
我按照 "reverse not defined" 问题的解决方案,但我仍然有这个错误...我在我所有的 urls 文件中导入了 reverse,但没有效果...然后我将 reverse 导入 views.py 文件和我的本地服务器开始工作... 此消息的原始解决方案是正确的,但作者没有提到 post 导入反向的位置,所以我想可能我会完成原始答案......如果我错了,我道歉,但它为我工作...
--在models.py
......
from django.urls import reverse
def get_absolute_url(self):
return reverse('url-name', kwargs={'pk':self.pk})