2011-03-27 9 views
0

私はジャンルのカテゴリーとサブジャンルのカテゴリを持っていると私はここでは、動的ルーティングを使用しようとしているが、私のコードは次のとおりです。DjangoのURL/slugs @#!

モデル:

from django.db import models 
from django.db.models import permalink 

class Genre(models.Model): 
    name = models.CharField(max_length=300) 
    slug = models.SlugField(max_length=150) 

def __unicode__(self): 
    return u'%s' % self.name 

@models.permalink 
def get_absolute_url(self): 
    return ('view_genre',(), { 'genre_slug' : self.slug }) 

class SubGenre(models.Model): 
    genre = models.ForeignKey(Genre) 
    name = models.CharField(max_length=300) 
    slug = models.SlugField(max_length=150) 

def __unicode__(self): 
    return u'%s' % self.name 

@models.permalink 
def get_absolute_url(self): 
    return ('view_subgenre',(), { 'subgenre_slug' : self.slug }) 

私の見解:

from django.template import Context, loader, RequestContext 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render_to_response, get_object_or_404 
from django.contrib.auth.decorators import login_required 
from django.core import serializers 

def index(request): 
    return render_to_response("home.html", context_instance=RequestContext(request),) 

def genre(request, slug): 
    genre = get_object_or_404(Genre, slug=genre_slug) 
    return render_to_response("genre.html", {'subgenre':  SubGenre.objects.filter(genre=genre)}, context_instance=RequestContext(request),) 

私のulrs:

from django.conf.urls.defaults import * 
from django.conf import settings 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
# Example: 
(r'^home/', 'home.views.index'), 
url(r'^home/(?P<genre_slug>[-\w]+)/$', 'home.views.genre', name='view_genre'), 
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), 

# Uncomment the admin/doc line below to enable admin documentation: 
# (r'^admin/doc/', include('django.contrib.admindocs.urls')), 

# Uncomment the next line to enable the admin: 
(r'^admin/', include(admin.site.urls)), 
) 

ルーティングが機能しない理由はわかりません。おそらく、誰かが正しい方向に私を指すことができますか?

+0

が動作していない、正確には何? –

+0

URLが自分のビューに接続していません。 –

+0

* URLは何ですか?例を挙げてください。 –

答えて

3

動作しないURLの例を挙げたくないにもかかわらず、問題はおそらく最初のURLにあります。 $で終了していないため、スラッシュがパターンの最後であることを示すために、home/で始まるすべてのURLと一致します。

代わりにこれを行います。

(r'^home/$', 'home.views.index'), 
+0

それはチケットです。 –

+0

私はあなたのURLマッピングをリストアップしようとアドバイスしたいと思います。 Djangoは最初の試合を選ぶでしょう。より具体的な試合が最初に来れば、そのような単純な間違いは問題を起こしにくいでしょう。 – jmichalicek

関連する問題