これは多くのソリューションで共通の問題であるように思われますが、遭遇したすべてのソリューションを試した後でも、まだこの問題が発生しています。
モデル:
class Category(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True,
help_text='Unique value for product page URL, created form name.')
description = models.TextField()
is_active = models.BooleanField(default=True)
meta_keywords = models.CharField("Meta Keywords",max_length=255,
help_text='Comma-delimited set of SEO keywords for meta tag')
meta_description = models.CharField("Meta Description", max_length=255,
help_text='Content for description meta tag')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'categories'
ordering = ['name']
verbose_name_plural = 'Categories'
def __unicode__(self):
return self.name
@models.permalink
def get_absolute_url(self):
#return ('catalog.views.show_category',(),{'category_slug' : str(self.slug)})
return ('catalog_category', (), { 'category_slug' : str(self.slug) })
ビュー:
def index(request, template_name="catalog/index.html"):
page_title = 'Anime and Manga'
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
def show_category(request, category_slug, template_name="catalog/category.html"):
c = get_object_or_404(Category, slug=category_slug)
products = c.product_set.all()
page_title = c.name
meta_keywords = c.meta_keywords
meta_description = c.meta_description
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
URL:
urlpatterns = patterns('catalog.views',
(r'^$', 'index', { 'template_name':'catalog/index.html' }, 'catalog_home'),
(r'^category/(?P<category_slug>[-\W]+)/$', 'show_category',
{'template_name':'catalog/category.html'}, 'catalog_category'),
シェルに入って試してみると:
逆 ('catalog_home')
...それは返します:
'/'
...どちらが正しい。ただし、試してみると:
逆 ('catalog_category', kwargs={'category_slug':'action'}
...それは返します:
NoReverseMatch: 引数 '()' およびキーワード引数 '{'category_slug': 'action'}' を持つ 'catalog_category' の逆が見つかりません。
ここに入力したコード サンプルにもかかわらず、実際のコードのインデントは正しいため、パーマリンクはカテゴリ クラスの下にあります。