Джанго urls / slugs @ #! - PullRequest
       8

Джанго urls / slugs @ #!

0 голосов
/ 27 марта 2011

У меня есть категория жанра и категория поджанра, и я пытаюсь использовать динамическую маршрутизацию, вот мой код:

Модель:

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),)

и мои язвы:

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)),
)

Я понятия не имею, почему не работает маршрутизация. Возможно, кто-то может указать мне правильное направление?

1 Ответ

3 голосов
/ 27 марта 2011

Несмотря на ваше нежелание приводить примеры URL, которые не работают, проблема, вероятно, заключается в первом URL. Поскольку вы не завершили это с $, чтобы указать, что косая черта является концом шаблона, он будет соответствовать всем URL, начинающимся с home/.

Сделайте это вместо:

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