【问题标题】:Reverse for 'send_referral_code' with arguments '()' and keyword arguments '{}' not found未找到带有参数“()”和关键字参数“{}”的“send_referral_code”的反向
【发布时间】:2014-05-29 07:41:50
【问题描述】:

我在我的一个 web 应用程序中使用 django,我也在使用 userena。在 userena 配置文件模板(profile_detail.html)中,我添加了一个锚标记,例如..

<a href = {% url 'send_referral_code'%}>Click here</a>

现在 send_referral_code 是在 urls.py 中声明的名称值,urls.py 是..

 from django.conf.urls import patterns, url, include
 from django.conf import settings

 from mail import views

 urlpatterns = patterns('',

    url(r'^$', views.send_referral_code,name='send_referral_code'),

)

views.py 是...

from accounts.models import MyProfile

from django.core.mail import send_mail


def send_referral_code(request):


    referral_code = MyProfile.objects.get(user = request.user)

    send_mail('referral_code','This is Your Referral Code','you@email',['user@example.com'],fail_silently = False)

值得一提的是,views.py 和 urls.py 都驻留在另一个应用程序,即“邮件”

这是我的主要 urls.py ..

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
import photo



urlpatterns = patterns('',
    # Examples:
    #url(r'^$', 'auth.views.home', name='home'),
    # url(r'^shutterstock/', include('shutterstock.foo.urls')),


    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:

    url(r'^accounts/', include('userena.urls')),
    url(r'^user_upload/',include('myprofile.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^showphoto/',include('photo.urls')),
    url(r'^mailing/',include('mail.urls')),




)

from django.conf import settings
if settings.DEBUG:
    urlpatterns += patterns(
        'django.views.static',
        (r'media/(?P<path>.*)',
        'serve',
        {'document_root': settings.MEDIA_ROOT}),
        (r'^something/hard/to/guess/', include('paypal.standard.ipn.urls')), )

现在我收到一个错误,即 Reverse for 'send_referral_code' with arguments '()' and keyword arguments '{}' not found 当我试图执行我的网站并指示该行时

<a href = {% url 'send_referral_code'%}>Click</a>

在我的 userena 应用程序的 profile_detail.html 文件中。现在我该如何解决这个问题或实际问题是什么?

【问题讨论】:

标签: python django


【解决方案1】:

我自己找到了答案,出现问题是因为,我把变量值作为send_mail函数参数的第一个参数,即

send_mail('referral_code','This is Your Referral Code','you@email', ['user@example.com'],fail_silently = False)

我就这样改了...

 send_mail('Referral Code','This is Your Referral Code','you@email',['user@example.com'],fail_silently = False)

现在它运行良好,可能是错误 Reverse for 'send_referral_code' with arguments '()' and keyword arguments '{}' not found 正在显示,因为我已经放置了变量而不是简单主题。由于我已将变量放在主题的位置,这就是它矛盾的原因。

【讨论】:

    【解决方案2】:

    它不起作用的原因是您的视图代码返回错误。所有视图方法都必须返回一个HttpResponse 对象。

    Python 中任何没有返回语句的方法,都返回None;并且由于您的视图方法中没有 return 语句,它返回 None 导致视图无法工作。

    试试这个:

    from django.shortcuts import redirect
    
    def send_referral_code(request):
        referral_code = MyProfile.objects.get(user = request.user)
        send_mail('referral_code',
                  'This is Your Referral Code',
                  'you@email.com',
                  ['user@example.com'],
                  fail_silently=False)
        return redirect('/')
    

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2013-12-07
      • 2015-08-29
      • 2013-07-25
      • 2019-11-06
      • 2012-07-08
      • 2019-04-21
      • 2016-06-15
      相关资源
      最近更新 更多