我是 Django 的初学者,正在试用 Tango with Django 教程。但是我遇到了一个无法纠正的难以理解的错误。我收到以下错误:
TypeError at /rango/category/python/
category() got an unexpected keyword argument 'category_name_slug'
调试错误显示为不包含在应用程序文件中,而是包含在核心 django 处理程序文件中,如下所示:
Exception Type: TypeError
Exception Value:
category() got an unexpected keyword argument 'category_name_slug'
Exception Location: c:\virtualenv\rango\lib\site-packages\django\core\handlers\base.py in get_response, line 111
View .py
from django.shortcuts import render
from django.http import HttpResponse
from rango.models import Category
from rango.models import Page
def index(request):
category_list_likes = Category.objects.order_by('-likes')[:5]
category_list_views = Category.objects.order_by('-views')[:5]
context_dict = {
'categories_likes': category_list_likes,
'categories_views': category_list_views,
}
return render(request, 'rango/index.html', context_dict)
def about(request):
return render(request, 'rango/about.html')
def category(request, category_name_url):
context_dict = {}
try:
category = Category.objects.get(slug=category_name_slug)
context_dict['category_name'] = category.name
pages = Page.objects.filter(category=category)
context_dict['pages'] = pages
context_dict['category'] = category
except Category.DoesNotExist:
pass
return render(request, 'rango/category.html', context_dict)
模型.py
from django.db import models
from django.template.defaultfilters import slugify
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
views = models.IntegerField(default=0, unique=False)
likes = models.IntegerField(default=0, unique=False)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Category, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
class Page(models.Model):
category = models.ForeignKey(Category)
title = models.CharField(max_length=128)
url = models.URLField()
views = models.IntegerField(default=0, unique=False)
def __unicode__(self):
return self.title
网址.py
from django.conf.urls import patterns, url
from rango import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'about/', views.about, name = 'About'),
url(r'category/(?P<category_name_slug>[\w\-]+)/$', views.category, name='category'),)
管理员.py
from django.contrib import admin
from rango.models import Category, Page
class PageAdmin(admin.ModelAdmin):
list_display = ('title', 'category', 'url')
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'views', 'likes')
prepopulated_fields = {'slug':('name',)}
admin.site.register(Category, CategoryAdmin)
admin.site.register(Page, PageAdmin)
最佳答案
您的 category()
View 需要 category_name_url
参数:
def category(request, category_name_url):
...
但是在 urls.py
中定义 category_name_slug
参数:
url(r'category/(?P<category_name_slug>[\w\-]+)/$', views.category,
name='category'),
使两个地方的参数相等。例如:
def category(request, slug):
...
但是在 urls.py
中定义 category_name_slug
参数:
url(r'category/(?P<slug>[\w\-]+)/$', views.category, name='category'),
关于python - category() 得到了一个意外的关键字参数 'category_name_slug',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28535962/