get_absolute_url не загружает страницу

Поэтому я пытаюсь написать свой блог и создать специальную страницу для каждой статьи, и у меня есть blog.html (главная страница блога) с кнопкой "Читать дальше".

<a class = "Read" href="{{ post.get_absolute_url }}">Read more...</a>

А у меня другой файл post.html который является базовым шаблоном для каждой страницы статьи. Модель Post имеет поле slug, а urls.py выглядит так:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.front, name='front'),
    url(r'^blog/', views.blog, name='blog'),
    url(r'^contact/', views.contact, name='contact'),
    url(r'^blog/(?P<slug>[^\.]+)', views.page, name='post')
]

И просмотр страницы выглядит так:

def page(request, slug):
    return render_to_response('home/post.html', {
        'post': get_object_or_404(Post, slug=slug)
    })

Проблема в том, что когда я нажимаю read more, ничего не происходит, но я смотрю на окно терминала, и сервер принимает его как запрос и возвращает 200, что означает успех, но страница не загружается.

Редактировать: модель Post:

class Post(models.Model):
    title = models.CharField(max_length=100, default='')
    text = models.TextField(default='')
    slug = models.SlugField(default=uuid.uuid1, unique=True)
    status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='w')
    description = models.TextField(default='', max_length=300)
    creation_date = models.DateTimeField(auto_now_add=True, editable=False)

     def __unicode__(self):
       return self.title

     def edit_text(self, text):
         self.text = text

     class Meta:
          get_latest_by = 'creation_date

2 ответа

Решение

Это проблема. Пожалуйста, попробуйте закрыть шаблоны URL $

urlpatterns = [
    url(r'^$', views.front, name='front'),
    url(r'^blog/$', views.blog, name='blog'),
    url(r'^contact/$', views.contact, name='contact'),
    url(r'^blog/((?P<slug>.*)/$', views.page, name='post')
]

Вы определили get_absolute_url для почтовой модели?

from django.core.urlresolvers import reverse
from django.db import models

class Post(models.Model):
   #fields

   def get_absolute_url(self):
      return reverse('post', args=[self.slug])
Другие вопросы по тегам