Django: перенаправление на объект генерирует странный URL

Я следую за первым примером из документации Django для django.shortcuts.redirect. Когда я вызываю перенаправление на мой объект, он перенаправляет на URL <bound method Event.get_absolute_url of <Event: Blah 2014>> в действительности это должен вызывать этот метод get_absolute_url и перенаправлять на URL, возвращаемый функцией. На самом деле вызов myevent.get_absolute_url() правильно возвращает '/1/right-slug', но перенаправление, которое должно вызывать только эту функцию, работает неправильно.

Для справки ниже приведены фрагменты модели, вида и URLConf.

models.py:

class Event(models.Model):
    name = models.CharField(max_length=255)
    start_date = models.DateField()


    @property
    def slug(self):
        return slugify(str(self))

    def get_absolute_url(self):
        return reverse('event-with-slug', kwargs={'event_id': self.id, 'slug': self.slug})

views.py:

def event_offers(request, event_id="1", slug=""):
    event = get_object_or_404(Event, id=event_id)

    if event.slug != slug:
        return redirect(event, permanent=True)

urls.py:

url(r'^event/(?P<event_id>\d+)/$', view=views.event_offers, name='event-without-slug'),
url(r'^event/(?P<event_id>\d+)/(?P<slug>[-\w\d]+)/$', view=views.event_offers,
                       name='event-with-slug'),

Запрос: www.example.com/1/wrong-slug

Ожидаемое перенаправление на: wwww.example.com/1/right-slug

Фактическое перенаправление на: www.example.com/1/wrong-slug/>

0 ответов

Другие вопросы по тегам