'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