我在models.py:
class ArticleCategory(models.Model):
category_name = models.CharField("Category", max_length=200, unique=True)
slug = models.SlugField(null=True, blank=True, unique=True)
def get_data(self):
return {
"id": self.pk,
"category_name": self.category_name,
"slug": self.slug,
}
class Article(models.Model):
category = models.ForeignKey(ArticleCategory)
...
def get_data(self):
return {
"id": self.pk,
...
}
views.py:
def articles(request, *args, **kwargs):
context = {
'categories': ArticleCategory.objects.all(),
'articles': Article.objects.filter(category__id=2)
}
return render(request, 'wellness.html', context)
一切都很好。但是,我希望category__id是动态的,所以我将函数更改为def articles(request, id, *args, **kwargs)
和'articles': Article.objects.filter(category__id=id)
似乎它是与以前的项目为我工作,但现在它抛出的错误,每次我试图设置这样的行为(尝试id, slug, category_name):
Exception Type: TypeError
Exception Value: articles() takes at least 2 arguments (1 given)
Exception Location: .../env/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py in _wrapped_view, line 23
也许url .py的东西?
from django.contrib.auth.decorators import login_required
...
urlpatterns = [
...
url(r'^wellness$', login_required(articles), name='wellness'),
...
]
确实在你的url .py中。
您定义了一个视图,它期望两个参数,但没有配置url
函数来捕获url的一部分,并将其作为request
旁边的附加参数传递。
您想要做这样的事情来分别捕获一个slug或id:
<标题>蛞蝓h1> 与id:搭配使用urlpatterns = [
url(r'^wellness/(?P<id>[0-9]+)/$', login_required(articles), name='wellness'),
]
您可以在文档中找到更多信息
标题>