概述
今天在做Django的一个task时,遇到了如下的错误:
Reverse for ''cal.views.month'' with arguments '(2013, 1)' and keyword arguments '{}' not found.
先说一下我的url配置是:
(r"^month/(d+)/(d+)/(prev|next)/$", "month"), (r"^month/(d+)/(d+)/$", "month"), (r"^month$", "month"),
出错页面的调用:
<a href="{% url cal.views.month year month.n %}">{{ month.name }}</a>
看了一下Django的文档,发现问题如下:
本来的url配置一般状况下是没有问题的,但是{% url %}这个命令要reverse url的配置,即通过 cal.views.month这个view找到对应的url,这时候django就会发现,找到了3个有month这个view的url的配置, 他不知道哪个市对的,所以默认是最后一个配置即(r"^month$", "month"),这时候,你可以看到这个配置的url是没有参数的,所以django才会报错说我的arguments是 '(2013, 1)' , 但是url上没有参数的。
纠正的方法就是使用命名url,即给每个配置的url起个唯一的名字,如下:
url(r"^month/(d+)/(d+)/(prev|next)/$", month, name="month_index"),
url(r"^month/(d+)/(d+)/$", month, name="month_current"),
url(r"^month$", month, name="month_default"),
那么在页面上调用就相应的改成:
<a href="{% url month_current year month.n %}">{{ month.name }}</a>
这样django搜索的时候,就能准确的找到有参数的url了。
最后
以上就是故意菠萝为你收集整理的django-- keyword arguments '{}' not found错误的全部内容,希望文章能够帮你解决django-- keyword arguments '{}' not found错误所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复