我是靠谱客的博主 故意菠萝,最近开发中收集的这篇文章主要介绍django-- keyword arguments '{}' not found错误,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天在做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错误所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部