Конфигурация Django URL - PullRequest
       7

Конфигурация Django URL

0 голосов
/ 07 февраля 2010

Предположим, у меня есть 3 модели: город, область, вход.

В каждом городе есть несколько областей, и каждая область может иметь несколько записей, НО для "сейчас", может быть будет только одна активная запись, и она будет показана. Итак по логике:

Обратите внимание, что в каждом городе, районе, записи будет использоваться переменная слага для класса соответствующей модели

Формат будет такой:

www.mysite.com/<slug of city>/<slug of area>/<slug of entry>

www.mysite.com/mycity/myarea/ -> будет отображать запись, привязанную к этой области и активную (это можно определить с помощью функции active_entry области).

Но пользователи могут просматривать некоторые старые записи, такие как:

www.mysite.com/mycity/myarea/some-old-entry-that-is-no-longer-active

Я написал функции get_absolute_url, прочитав книгу «Практическое Django Projects 2nd Edition», но теперь я застрял.

У меня есть такие модели:

from django.db import models

class Entry(models.Model):
    area = models.ForeignKey('Area',verbose_name="The area that this entry belongs to")
    slug = slug = models.SlugField(unique=True) # this will be auto populated via admin panel, from title
    title = baslik = models.CharField()
    content = models.TextField()
    start_time = models.DateTimeField()#start time for this entry.
    end_time = models.DateTimeField()#end time for this entry.

    @models.permalink
    def get_absolute_url(self):
        return ("entry.detail",(),{"city":self.area.city.slug,"area":self.area.slug,"entry":self.slug})



class Area(models.Model):
    city = models.ForeignKey(verbose_name="city that this area belongs to")
    name = models.CharField(max_length=30)
    slug = models.SlugField(unique=True)# this will be auto populated via admin panel, from name

    @models.permalink
    def get_absolute_url(self):
        return ("bolge.detay",(),{"city":self.city.slug,"area":self.slug})

    def active_entry(self):
        from datetime import datetime, date, time
        now = datetime.now()
        try:
            return Entry.objects.get(area__exact=self,start_time__lte=now,end_time__gte=now)
        except Entry.DoesNotExist:
            return False



class City(models.Model):
    name =models.CharField(max_length=30)
    slug = models.SlugField(unique=True) # this will be auto populated via admin panel, from name
    @models.permalink
    def get_absolute_url(self):
        return ("city.detail",(),{"city":self.slug})

Пожалуйста, помогите этой бедной душе настроить его URL-адрес.

Спасибо

1 Ответ

1 голос
/ 07 февраля 2010

Вероятно, это должно выглядеть примерно так:

urlpatterns = patterns('',
    (r'^(?P<city>[a-z-]+)/(?P<area>[a-z-]+)/$', 'yourapp.views.areaview'),
    (r'^(?P<city>[a-z-]+)/(?P<area>[a-z-]+)/(?P<entry>[a-z-]+)/$', 'yourapp.views.entryview'),
)
...