未find参数'()'和关键字参数'{}'的'*'
在呈现时捕获exception:
未find参数'()'和关键字参数'{}'的'products.views.'filter_by_led'反向。
我能够成功地从shell导入products.views.filter_by_led ,它的工作原理是这样的path应该是正确的。 
这里是urls.py:
 (r'^led-tv/$', filter_by_led ), 
这是错误正在产生的地方:
 href="{% url products.views.filter_by_led %}"> 
我不明白,因为这从相同的文件正常工作:
 {% url products.views.lcd_screen_size screen_size=50 %} 
这里是函数定义:
 def filter_by_led(request): 
我不明白为什么Django会认为这个函数不能find该函数的Reverse。
 我删除了所有*.pyc文件并重新启动了Apache。 
我究竟做错了什么?
我可以想到的三件事情是从我的头顶开始的:
- 只是使用命名的url ,它更强大和可维护无论如何
- 
尝试在命令行使用 django.core.urlresolvers.reverse(可能)更好的错误>>> from django.core.urlresolvers import reverse >>> reverse('products.views.filter_by_led')
- 
检查是否有多个指向该视图的url 
Shell调用(如上所述)调用这些问题是非常好的,但是有两个关键的条件:
- 您必须提供与视图所需的任何参数匹配的参数,
- 这些参数必须匹配正则expression式模式。
是的,这是合乎逻辑的。 是的,这也是令人困惑的,因为反向只会抛出exception,不会给你任何进一步的提示。
URL模式的一个例子:
 url(r'^cookies/(?P<hostname>[^/]+)/(?P<url_id>\d+)/$', 'register_site.views.show_cookies', name='show_cookies'), 
然后在shell中发生了什么:
 >>> from register_site.views import show_cookies >>> reverse(show_cookies) NoReverseMatch: Reverse for 'register_site.views.show_cookies' with arguments '()' and keyword arguments '{}' not found. 
它不工作,因为我没有提供参数。
 >>> reverse('show_cookies', kwargs={'url_id':123,'hostname': 'aaa'}) '/cookies/aaa/123' 
现在,它的工作,但…
 >>> reverse('show_cookies', kwargs={'url_id':'x','hostname': 'www.dupa.com'}) NoReverseMatch: Reverse for 'show_cookies' with arguments '()' and keyword arguments '{'url_id': 'x', 'hostname': 'www.dupa.com'}' not found. 
现在它没有工作,因为url_id不匹配正则expression式(预期的数字,提供的string)。
您可以对位置参数和关键字参数使用反转 。 语法是:
 reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None) 
至于url模板标签,有一些有趣的事情。 Django 文档给出了使用带引号的视图名称的例子:
{%url'news.views.year_archive'yearvar%}
所以我在我的HTML模板中以类似的方式使用它:
{%url'show_cookies'hostname = u.hostname url_id = u.pk%}
但这不适合我。 但是exception消息给了我一些什么可能是错误的提示 – 请注意视图名称周围的双引号:
反向“show_cookies”与参数…
当我删除引号时开始工作:
{%url show_cookies hostname = u.hostname url_id = u.pk%}
这是令人困惑的。
视图名称周围需要单引号
 {% url 'viewname' %} 
代替
 {% url viewname %} 
我有一个类似的问题,解决scheme是正确使用'$'(string结束)字符:
我的主要url.py看起来像这样(注意$字符):
 urlpatterns = [ url(r'^admin/', include(admin.site.urls )), url(r'^$', include('card_purchase.urls' )), ] 
和我的card.purchases应用程序的url.py说:
 urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^purchase/$', views.purchase_detail, name='purchase') ] 
我用了两次'$'。 所以一个简单的改变工作:
 urlpatterns = [ url(r'^admin/', include(admin.site.urls )), url(r'^cp/', include('card_purchase.urls' )), ] 
注意第二个url的变化! 我的card_purchases应用程序的url.py如下所示:
 urlpatterns = [ url(r'^$', views.index, name='index'), url(r'^purchase/$', views.purchase_detail, name='purchase') ] 
除此之外,我可以确认名称url的引用是至关重要的!
我不认为你需要在URL条目后面的斜杠。 即,把这个,而不是:
 (r'^led-tv$', filter_by_led ), 
这是假定你已经启用了尾部斜杠 ,这是默认的。
 {% url 'polls:create' poll.id %}