python - category() 得到了一个意外的关键字参数 'category_name_slug'

标签 python django

我是 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/

相关文章:

django - 让Django的views.py返回并执行javascript

python - 禁用 `CV_CAP_PROP_CONVERT_RGB` 有什么作用?

python - 如何在 Keras 中的卷积层之间添加跳跃连接

python - block 中的 Django 模板翻译是不可能的

python - 基于 Django 模型内部方法的计算字段

django - get_sucess_url 在 django 中如何工作?

python - django 从 root : FileNotFoundError 读取文件

python - 爬取时如何用python beautifulsoup判断一个逻辑部分

python - 如何替换 pandas 数据框中给定列的第 n 行中的值?

python - Tensorflow2.0:GPU 在超参数调整循环期间耗尽内存