我是一个成熟的django网站开发人员。我对Django有问题。此错误是“ cats()收到了意外的关键字参数'pk'”。请查看我的代码并为我提供帮助。
Request Method: GET
Request URL: http://127.0.0.1:8000/1
Django Version: 1.6.5
Exception Type: TypeError
Exception Value:
cats() got an unexpected keyword argument 'pk'
Exception Location: /usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response, line 112
Python Executable: /usr/bin/python
Python Version: 2.7.6
models.py
from django.db import models
from taggit.managers import TaggableManager
class Category(models.Model):
title = models.CharField(max_length=40)
def __unicode__(self):
return self.title
class Post (models.Model):
title = models.CharField(max_length=150)
body = models.TextField()
date = models.DateTimeField()
tags = TaggableManager ()
cats = models.ManyToManyField(Category)
def __unicode__ (self):
return self.title
urls.py
from django.conf.urls import include, url, patterns
from django.views.generic import ListView, DetailView
from blog.models import Post, Category
urlpatterns = patterns('blog.views',
url(r'^$',ListView.as_view(
queryset = Post.objects.all().order_by("-date")[:2],
template_name="index.html")),
url(r'^(?P<pk>\d+)$', 'cats', name='cats'),
)
views.py
from blog.models import Post,Category
from django.shortcuts import render_to_response
from django.template import RequestContext
def cats(request):
queryset = Post.objects.all().order_by("-date")
navitem = Category.objects.all().order_by("title")
return render_to_response('post.html',{'queryset':queryset,'navitem':navitem},context_instance=RequestContext(request))
问题在于urls.py中的这一行:
url(r'^(?P<pk>\d+)$', 'cats', name='cats')
您正在向视图发送不需要的参数。
您可以将pk
参数包含在视图参数中,如下所示:
def cats(request, pk):
或这个:
def cats(request, pk=None):
或者,甚至更好的是,您可以在URL中使用其他模式,而无需捕获它(因为您根本没有pk
在视图中使用该值,因此不需要为其创建变量),如下所示:
url(r'^(\d+)$', 'cats', name='cats')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句