cats() got an unexpected keyword argument 'pk'
Question: I'm a amature django web developer. I have a problam with Django. this error
is "cats() got an unexpected keyword argument 'pk'". please see my codes and
help me.

    
    
    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))
    


Answer: The problem is in this line in **urls.py** :

    
    
    url(r'^(?P<pk>\d+)$', 'cats', name='cats')
    

You are sending to the view an argument that it doesn't need.

You can include the `pk` argument in the view parameters, like this:

    
    
    def cats(request, pk):
    

or this:

    
    
    def cats(request, pk=None):
    

Or, even better, you can use a different pattern in your URL, without
[capturing](http://www.regular-expressions.info/named.html) it (because you
are not using that `pk` value at all in your view, you don't need to create a
variable for it), like this:

    
    
    url(r'^(\d+)$', 'cats', name='cats')
    

