2

これは多くのソリューションで共通の問題であるように思われますが、遭遇したすべてのソリューションを試した後でも、まだこの問題が発生しています。

モデル:

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' の逆が見つかりません。

ここに入力したコード サンプルにもかかわらず、実際のコードのインデントは正しいため、パーマリンクはカテゴリ クラスの下にあります。

4

1 に答える 1

4

「英数字以外\Wの任意の文字」を意味する正規表現で使用しました。という意味だったと思います。\w

于 2013-03-31T17:31:58.677 に答える