Найти - Пользователи
Полная версия: Проблема с изменением BooleanField поля
Начало » Django » Проблема с изменением BooleanField поля
1
Vanekw
В проекте нужно для сообщения установить возможность отметить его как избранное.
Для этого в модели создал 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 для выбранного сообщения не меняется.

Подскажите, пожалуйста, в чем моя ошибка?
Alen
Кавычки?
"{%static "star_en.png"%}"
Vanekw
С кавычками я конечно ошибся, но эта часть кода отвечает за вывод статичного файла, а с этим проблемы не было. Исправил, но результат клика на изображение прежний. Мне кажется проблема в самом представлении, потому что redirect() то не срабатывает. Пробовал без обработки исключений - без результата.
Vanekw
Похоже что проблема связана не с 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 работает вывод всех записей, а вот редактирование отчего то нет.
В чем проблема не могу найти…
den4ik
Используй таг 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/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB