Django RedirectView and reverse() doesn't work together?

前端 未结 4 645
生来不讨喜
生来不讨喜 2021-01-11 12:49

I\'m having this weird problem.

When I did this:

from django.core.urlresolvers import reverse
reverse(\'account-reco-about-you\')
# returns \'/accoun         


        
相关标签:
4条回答
  • 2021-01-11 13:13

    @wtower pattern_name will be ok, but you may need to add namespace as below.

    RedirectView.as_view(pattern_name='polls:index')
    
    0 讨论(0)
  • 2021-01-11 13:15

    no need for reverse() or reverse_lazy().

    simply specify the pattern_name parameter:

    RedirectView.as_view(pattern_name='account-reco-about-you')
    
    0 讨论(0)
  • 2021-01-11 13:16

    This problem is to do with trying to reverse something at import time before the URLs are ready to be reversed. This is not a problem with RedirectView itself - it would happen with anything where you tried to reverse in your urls.py file, or possibly in a file imported by it.

    In the development version of Django, there is a function called reverse_lazy specifically to help in this situation.

    If you're using an earlier version of Django, there is a solution here: Reverse Django generic view, post_save_redirect; error 'included urlconf doesnt have any patterns'.

    0 讨论(0)
  • 2021-01-11 13:17

    You need to use "reverse_lazy" that is defined in "django.core.urlresolvers" in Django 1.4 and above.

    Here is an example urls.py:

    from django.conf.urls import patterns, include, url
    from django.views.generic import RedirectView
    from django.core.urlresolvers import reverse_lazy
    
    # Uncomment the next two lines to enable the admin:
    from django.contrib import admin
    admin.autodiscover()
    
    urlpatterns = patterns('apps.website.views',
        url(r'^$', 'home', name='website_home'),
        url(r'^redirect-home/$', RedirectView.as_view(url=reverse_lazy('website_home')), 
            name='redirect_home'),
    
    )
    

    So in the above example, the url "/redirect-home" will redirect to "/". Hope this helps.

    0 讨论(0)
提交回复
热议问题