Python 全球名称';反向';没有定义
我正在使用Python 全球名称';反向';没有定义,python,django,paypal,django-paypal,Python,Django,Paypal,Django Paypal,我正在使用django-paypal库在我的网站上使用paypal支付 接下来,我设置了paypal\u dict,并添加了表单 paypal_dict = { "business": settings.PAYPAL_RECEIVER_EMAIL, "amount": "10000000.00", "item_name": "name of the item", "invoice": "unique-invoice-id",
django-paypal
库在我的网站上使用paypal支付
接下来,我设置了paypal\u 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/",
}
但是,我得到了一个错误
全局名称“reverse”没有定义
我使用的是Python 2.7.9,这是怎么回事?reverse
不是Python中的内置函数。据推测,它是某些web框架中用于执行反向路由(从名称获取url路径)的函数。notify\u url
必须是Paypal将向其发送通知的应用程序中的url。Python中没有内置函数reverse
。(有一个倒过来的,但我怀疑这不是你想要的。)
Django中有一个函数。但您只能在作为Django视图或类似视图加载的代码中获得Django内置项;如果以其他方式导入或运行此代码,它将不存在
因此,假设您在前面的说明中出错了,实际上并没有创建视图。(Django PayPal说明显然是为已经是有经验的Django开发人员的人编写的;如果你不理解Django的基本概念,你可能需要先完成。)你需要导入函数reverse
:
from django.core.urlresolvers import reverse
你可以阅读更多关于它的内容。它是针对django的,但看起来您正试图构建一个URL,所以它可能是您想要的
对于Django>2.0
from django.urls import reverse
paypal ipn的url可能是在django paypal的url中定义的。我想导入django的反面会解决这个问题
from django.core.urlresolvers import reverse
在Django2.0中:
from django.urls import reverse
我按照这个解决方案解决了“反向未定义”的问题,但我仍然有这个错误。。。我在我所有的URL文件中导入了反向,没有任何效果。。。然后我将reverse导入views.py文件,我的本地服务器开始工作。。。
这个消息的原始解决方案是正确的,但作者并没有提到在哪里发布反向导入,所以我想我可能会完成原始答案。。。如果我错了,我道歉,但它对我起了作用 --在models.py中使用此代码
from django.urls import reverse
def get_absolute_url(self):
return reverse('url-name', kwargs={'pk':self.pk})
是否要反转字符串?老实说,我不确定它试图实现什么,这直接来自于示例,尝试使用它会导致错误。没有名为reverse
的内置函数。你在什么地方定义过吗?或者期望进口一个?追溯到哪里了?攻击性代码?大概这应该是Djangoreverse
函数,如果您的模块作为Django视图加载,您可以免费获得该函数,但如果您以其他方式导入或运行它,则不会获得该函数。就是这样!谢谢您的答案必须格式化才能理解。先解决问题,然后解决问题。谢谢