'global name 'reverse' is not defined
I'm using the django-paypal library to use PayPal payments on my site.
Following the example, I have set the paypal_dict and added the form.
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/",
}
However, I am getting the error global name 'reverse' is not defined I am using Python 2.7.9, what's going on?
Solution 1:[1]
in Django2.0 :
from django.urls import reverse
Solution 2:[2]
--Use this code in models.py......
from django.urls import reverse
def get_absolute_url(self):
return reverse('url-name', kwargs={'pk':self.pk})
Solution 3:[3]
reverse isn't a builtin function in python. Presumably, it's a function in some web framework for doing reverse-routing (getting a url path from a name). The notify_url has to be a url in your application that Paypal will send notices to.
Solution 4:[4]
There is no builtin function reverse in Python. (There is a reversed, but I doubt it's what you want.)
There is a reverse function in Django. But you only get Django builtins in code that's loaded as a Django view or similar; if you import or run this code in some other way, it won't exist.
So, presumably, you've gotten something wrong earlier in the instructions, and aren't actually creating a view. (The Django-PayPal instructions are clearly written for someone who's already an experienced Django developer; if you don't understand basic Django concepts you will probably need to work through the tutorials first.)
Solution 5:[5]
The url for paypal-ipn is probably defined in django-paypal's urls. I guess that importing django's reverse will solve this problem.
from django.core.urlresolvers import reverse
Solution 6:[6]
I followed this solution to "reverse not defined" problem, and I still had this mistake... I imported reverse in all my urls files, with no effect... Then I imported reverse into views.py files and my local server started to work... The original solution to this message is right, but author didn't mention where to post import reverse, so I thought may be I will complete the original answer... If somehow I am wrong, I apologize, but it worked for me...
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | NelsonGon |
| Solution 3 | singron |
| Solution 4 | abarnert |
| Solution 5 | Jey |
| Solution 6 |
