Django,函数需两个参数(只给了一个)
我在views.py里有一个这样的函数:
gunlist = []
def hepsi(request, slug):
basliklar = Baslik.objects.filter(active=True).order_by('-updated')
for i in basliklar:
i = Baslik.objects.get(slug=slug)
entryler = i.entry_set.all()
ent1 = entryler.latest('id')
ent2 = ent1.updated
ent3 = str(ent2).split(" ")
zaman1 = date.today()
zaman2 = str(zaman1).split(" ")
zamangun = zaman2[0]
entgun = ent3[0]
if entgun == zamangun:
gunlist.append(i)
cta = {'form2': form2, 'basliklar': basliklar, 'entryler': entryler, 'baslik': baslik, 'ent1': ent1, 'ent2': ent2, 'entgun': entgun, 'zamangun': zamangun}
return render(request, "base.html", cta)
我想比较一个对象的日期和当前日期。当我启动服务器并访问这个链接时,出现了这个错误:
TypeError at /
hepsi() takes exactly 2 arguments (1 given)
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.6.5
Exception Type: TypeError
Exception Value:
hepsi() takes exactly 2 arguments (1 given)
Exception Location: /Users/malisit/Django/sozluk/lib/python2.7/site-packages/django/core/handlers/base.py in get_response, line 112
Python Executable: /Users/malisit/Django/sozluk/bin/python
Python Version: 2.7.5
这是什么问题呢?我该怎么做才能解决这个问题呢?谢谢。
这是urls.py的部分:
url(r'^$', 'hepsi', name = "hepsiliste")
2 个回答
0
问题在于,当你调用'/'时,没有给slug这个参数赋值。解决这个问题的方法是给slug参数一个默认值,也就是说:
def hepsi(request, slug=None):
#your logic
2
这个 hepsi
视图使用了 slug
这个参数,所以在网址里必须包含 slug
:
url(r'^(?P<slug>[-w]+)/$', 'hepsi', name = "hepsiliste")