要通过名称或View_name反向查找URL,我们将在下面的视图中使用反向函数
reverse("calendarviewurl2", kwargs={"year":theyear,"month":themonth})
Run Code Online (Sandbox Code Playgroud)
和反向功能签名如下
http://code.djangoproject.com/browser/django/trunk/django/core/urlresolvers.py
def reverse(self, lookup_view, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我的问题与kwargs有关
当我们想要将字典作为关键字参数发送时,我们应该使用下面的语法 片段1
kwargs={"year":2009,"month":9}
reverse("name",**kwargs)
Run Code Online (Sandbox Code Playgroud)
而不是下面的代码
片段2
reverse("name",kwargs={"year":2009,"month":9})
Run Code Online (Sandbox Code Playgroud)
所以我的问题是
你没看签名,
def reverse(viewname, urlconf=None, args=None, kwargs=None,
prefix=None, current_app=None):
Run Code Online (Sandbox Code Playgroud)
完全没有**kwargs.
kwargs={"year":2009,"month":9}
reverse("name",**kwargs)
Run Code Online (Sandbox Code Playgroud)
手段
reverse("name", year=2009, month=9)
Run Code Online (Sandbox Code Playgroud)
这完全不同于
reverse("name",kwargs={"year":2009,"month":9})
Run Code Online (Sandbox Code Playgroud)
当一个函数确实占用时**kwargs,两种调用方式都是相同的.但事实并非如此.反向看起来像这样**kwargs:
def reverse(viewname, urlconf=None, prefix=None,
current_app=None, *args, **kwargs):
Run Code Online (Sandbox Code Playgroud)