Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 22, 2014 15:25:26

Vanekw
Зарегистрирован: 2014-11-22
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с изменением BooleanField поля

В проекте нужно для сообщения установить возможность отметить его как избранное.
Для этого в модели создал BooleanField - note_favorite.
Для этого делаю представление:

def ch_favorite(request, note_id):
    try:
        note = Note.objects.get(id = note_id)
        note.note_favorite = not note.note_favorite
        note.save()
    except ObjectDoesNotExist:
        raise Http404
    return redirect('/')
Отметить\снять отметку с сообщения можно при нажатии на картинку, для этого прописал:
<a href="notes/ch_favorite/{{ note.id }}/"><img src="{%static "star_en.png"%}" width="25px" height="25px" /></a>
Но при клике на изображение происходит только добавление к адресу /notes/ch_favorite/{{ note.id }} и значение note_favorite для выбранного сообщения не меняется.

Подскажите, пожалуйста, в чем моя ошибка?

Офлайн

#2 Ноя. 22, 2014 19:34:06

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Проблема с изменением BooleanField поля

Кавычки?

"{%static "star_en.png"%}"

Офлайн

#3 Ноя. 23, 2014 03:38:18

Vanekw
Зарегистрирован: 2014-11-22
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с изменением BooleanField поля

С кавычками я конечно ошибся, но эта часть кода отвечает за вывод статичного файла, а с этим проблемы не было. Исправил, но результат клика на изображение прежний. Мне кажется проблема в самом представлении, потому что redirect() то не срабатывает. Пробовал без обработки исключений - без результата.

Офлайн

#4 Ноя. 24, 2014 17:54:52

Vanekw
Зарегистрирован: 2014-11-22
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с изменением BooleanField поля

Похоже что проблема связана не с BooleanField и не с redirect().
Написал представление для редактирования записи:

def edit_note(request, note_id):
    return render_to_response('note/edit_note.html',
                              {'note': Note.objects.get(id = note_id),
                               'username': auth.get_user(request).username}
В шаблоне для вывода записей добавил:
<a href="/edit/{{ note.id }}/"> {{note.note_title}}</a>

В urls приложения указал:
url(r'^edit/(?P<note_id>\d+)/$', 'notes.views.edit_note', name = 'edit_note'),
Результат прежний: к адресу добавляется /edit/1/, например.

Самое что интересное написал логинку отдельным приложением. Блок логинки так же включается блоком в главную страницу. И в этом приложении все работает. И логин\логаут, и redirect().

urls:
url(r'^login/$', 'loginsys.views.login', name = 'login'),
url(r'^logout/$', 'loginsys.views.logout', name = 'logout'),
ссылка на вход:
<a href="/auth/login/">Войти</a>

Глобальный urls:
url(r'^auth/', include('loginsys.urls')),
url(r'^', include('notes.urls')),

Из приложения notes работает вывод всех записей, а вот редактирование отчего то нет.
В чем проблема не могу найти…

Отредактировано Vanekw (Ноя. 24, 2014 17:56:50)

Офлайн

#5 Дек. 9, 2014 03:35:35

den4ik
Зарегистрирован: 2014-07-20
Сообщения: 59
Репутация: +  4  -
Профиль   Отправить e-mail  

Проблема с изменением BooleanField поля

Используй таг url. У тебя проблема с передним слэшем, в шаблоне он есть, а при определении в urls.py слэша нет.

<a href="/edit/{{ note.id }}/"> {{note.note_title}}</a>
замени на
<a href="{% url 'edit_note' note_id=note.id %}"> {{note.note_title}}</a>

url(r'^', include('notes.urls')),
лучше так
url(r'^notes/', include('notes.urls')),


upd: Относительная ссылка в передним слэшем (пример: /edit/1/) ссылается на ДОМЕН/edit/1/, если слеша переднего нет, то пересыл идет на ДОМЕН/адрес/открытой/страницы/edit/1/

Отредактировано den4ik (Дек. 9, 2014 03:43:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version