在Django中找不到反向

时间:2017-09-03 15:45:42

标签: python django

这可能是一个简单的,但我已经在这几个小时,我一定是缺少一些东西。我们走了:

urls.py:

urlpatterns = [
# Event patterns
url('^$', views.BuddyProgram.as_view(), name='buddy_program'),
url('^dashboard/$', views.BuddyDashboard.as_view(), name='buddy_dashboard'),
url('^thank-you/$', views.BuddyFinal.as_view(), name='final'),

url('^completed_intro/$', views.CompletedIntro.as_view(), name='buddy_completed_intro'),
url('^completed_passive_track/$', views.CompletedPassiveTrack.as_view(), name='buddy_completed_passive_track'),
url('^about/$', views.BuddyAbout.as_view(), name='buddy_about'),
url('^list/$', views.Buddies.as_view(model=BuddyProfile), name='buddies'),
url('^signup/$', views.BuddySignupView.as_view(), name='buddy_signup'),

# url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
url(r'^(?P<buddy_id>[0-9]+)/$', views.Buddy.as_view(model=BuddyProfile), name='buddy'),

views.py:

class BuddyFinal(TemplateView):
    template_name = 'buddy/thank_you.html'

class BuddySignupView(SignupView):

    template_name = 'buddy/buddy_create.html'
    success_url = reverse('final')  # profile specific success url
    form_class = BuddySignupForm
    profile_class = BuddyProfile  # profile class goes here

    def form_valid(self, form):

        response = super(BuddySignupView, self).form_valid(form)
        profile = self.profile_class(user=self.user)

        profile.save()

        return response

我得到的错误:

 django.core.urlresolvers.NoReverseMatch: Reverse for 'final' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

2 个答案:

答案 0 :(得分:2)

由于您在导入BuddySignupView时没有加载您的网址(因此执行reverse),Django无法找到该网址。

您应该使用reverse_lazy代替:https://docs.djangoproject.com/en/1.11/ref/urlresolvers/#reverse-lazy

views.py文件中:

from django.core.urlresolvers import reverse_lazy

class BuddySignupView(SignupView):

    template_name = 'buddy/buddy_create.html'
    success_url = reverse_lazy('final')  # profile specific success url

reverse_lazy仅反转&#34;运行时&#34;的URL名称(当Django实际需要值时)而不是&#34;导入时间&#34;什么时候可能还没有。

答案 1 :(得分:0)

此错误即将到来because in any template file you are accecsing url(thank-you or signup) in wrong format.确保html中的此网址。