Я покажу вам, как я решил это в моем блоге, чтобы вы могли сделать что-то подобное. Мои комментарии для модели Entry в приложении для записей.
Сначала добавьте новый метод для вашего объекта Entry (like).
def get_absolute_url(self):
return "/%i/%i/%i/entry/%i/%s/" % (self.date.year, self.date.month, self.date.day, self.id, self.slug)
Генерирует URL для объектов ввода. Пример URL: / 2009/12/12 / entry / 1 / lorem-ipsum /
В urls.py добавить 1 строку:
(r'^comments/posted/$', 'smenteks_blog.entries.views.comment_posted'),
Так что теперь у вас должно быть как минимум 2 строки для комментариев в файле urls.py.
(r'^comments/posted/$', 'smenteks_blog.entries.views.comment_posted'),
(r'^comments/', include('django.contrib.comments.urls')),
Для записей (например) приложения в файле views.py добавить функцию:
from django.contrib.comments import Comment #A
...
def comment_posted(request):
if request.GET['c']:
comment_id = request.GET['c'] #B
comment = Comment.objects.get( pk=comment_id )
entry = Entry.objects.get(id=comment.object_pk) #C
if entry:
return HttpResponseRedirect( entry.get_absolute_url() ) #D
return HttpResponseRedirect( "/" )
- A) Импортировать поверх файла
доступ к объекту комментария,
- Б) Получить
Форма комментария REQUEST,
- C) Fetch
входной объект,
- D) Использование
метод get_absolute_url, чтобы сделать
правильный редирект.
Сейчас:
- Кнопка «Отправить» в форме комментария на сайте входа перенаправляет пользователя на тот же (входной) сайт.
- Кнопка «Опубликовать» на сайте предварительного просмотра перенаправляет пользователя на соответствующий (входной) сайт.
- Кнопка предварительного просмотра в форме комментариев на сайте входа и на сайте предварительного просмотра перенаправляет пользователя на сайт предварительного просмотра
- Спасибо, страница больше не используется (по моему мнению, эта страница была довольно раздражающей).
Следующее, что нужно сделать, это переопределить шаблон preview.html:
- Перейдите в django framework dir, под linux это можно сделать с помощью / usr / share / pyshared /.
- Получить оригинальный шаблон preview.html от DJANGO_DIR / contrib / comments / templates / comments / preview.html
- Скопируйте его в директорию шаблонов в вашем проекте PROJECT_DIR / templates / comments / records_preview.html
- Отныне он будет переопределять шаблон по умолчанию. Вы можете изменить extends следующим образом: {% extends "your_pagelayout.html"%}, чтобы ваш макет и все файлы css работали.