【问题标题】:Another NoReverseMatch error. Trying to use reverse() in model layer另一个 NoReverseMatch 错误。尝试在模型层中使用 reverse()
【发布时间】:2012-10-12 01:28:30
【问题描述】:

我试图找到类似的主题,但对我没有多大帮助。

我的错误(例如):

带有参数的“user_activate”反向 '(u'pU6ARMPCgHeyTAGhBWYwxZqLSUtwqWHqnf9MNEfd',)' 和关键字参数 未找到“{}”

urls.py:

url(r'^user/activate/([A-Za-z0-9]+)$','users.views.activate', name='user-activate'),

views.py:

def activate(request, key):
    user = User.objects.select_related('profile').get(activation_key=key)
    if user is not None:
       if user.is_active:
           print 'already active'
       else:
          if user.get_profile().check_key_is_valid():
             user.is_active = True
             user.save()
          else:
             user.get_profile().reset_activation_data()
             send_activation_email(user.get_profile().activation_key, user.email)
             print 'key expired'
    else:
        print 'user not found'
    return HttpResponseRedirect(reverse('front'))

models.py:

def send_activation_email(key, email):
    from django.core.urlresolvers import reverse
    path = reverse('user_activate', args=[key])
    from django.contrib.sites.models import Site
    site = Site.objects.get_current().domain
    url = "http://%s%s" % (site, path)

    from django.core.mail import send_mail
    from my_app import settings
    send_mail('Account activation', url, settings.SITE_EMAIL,
        [email], fail_silently=False)

我在这里做错了什么?

【问题讨论】:

    标签: django django-models django-urls


    【解决方案1】:

    您已将 url 命名为 name='user-activate'(带有破折号),而您正尝试使用 'user_activate''_' 进行反向查找。

    改变

    path = reverse('user_activate', args=[key])
    

    path = reverse('user-activate', args=[key])
    

    【讨论】:

      猜你喜欢
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多