Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 18

Вызывается функция при обновлении страницы, но должна вызываться только при нажатии на кнопку

28.03.2024, 19:11. Показов 739. Ответов 3

Студворк — интернет-сервис помощи студентам
У меня на сайте надо реализовать публикацию или скрытие поста. Для этого я написал кнопку, которая меняет значение базы данных is_published на 0 или 1 при нажатии, однако значение is_published также меняется при обновлении страницы. Вот views.py:
Python
1
2
3
4
def profile(request):
    user_now = User.objects.get(username=request.user.username)
    data = Bloger.objects.get(pk=user_now.channel_id_id)
    return render(request, 'users/profile.html', {'on_site': data,})
Это страница html:
HTML5
1
2
3
4
5
6
7
              {% if on_site.is_published == 0 %}
                  <button><a href="{{ on_site.change_published_on_1 }}" class="callback">Опубликовать</a></button>
                  <p>{{ on_site.is_published }}</p>
              {% else %}
                <button><a href="{{ on_site.change_published_on_0 }}" class="callback">Скрыть</a></button>
                  <p>{{ on_site.is_published }}</p>
              {% endif %}
Это models.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
class Bloger(models.Model):
    is_published = models.IntegerField(default=0)
    
    def change_published_on_0(self):
        self.is_published = 0
        self.save()
        return reverse('users:profile')
 
    def change_published_on_1(self):
        self.is_published = 1
        self.save()
        return reverse('users:profile')
Вообще кнопка работает правильно - она меняет значение is_published с 0 на 1 и обратно, но также значение is_published меняется при обычном обновлении страницы. Что может быть не так? Я думаю, что это может происходить из-за того, что я прописал логику обновления is_published в models, а не во views, но я не понимаю как перехватить сигнал, что пользователь нажал на кнопку во views.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2024, 19:11
Ответы с готовыми решениями:

При нажатии на кнопку должна быть выполнена функция
При нажатии на кнопку должна быть выполнена функция, которая вычисляет курс студента (в зависимости от года поступления в университет)....

При нажатии на кнопку должна быть выполнена функция
в текстовое поле вводится строка текста. При нажатии на кнопку должна быть выполнена функция, которая первую букву каждого слова...

при нажатии на кнопку, должна вызваться функция, которая генерирует новое окно, с новым фоном, заголовком и текстом
Насколько я понимаю, пр нажатии на кнопку, должна вызваться функция, которая генерирует новое окно, с новым фоном, заголовком и текстом. ...

3
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213
29.03.2024, 14:05
Цитата Сообщение от Daniil Kray Посмотреть сообщение
Что может быть не так?
Вот тут
Цитата Сообщение от Daniil Kray Посмотреть сообщение
<button><a href="{{ on_site.change_published_on_1 }}" class="callback">Опубликовать</a></button>
Почитай про формы

Цитата Сообщение от Daniil Kray Посмотреть сообщение
Я думаю, что это может происходить из-за того, что я прописал логику обновления is_published в models, а не во views
Бизнес-логику лучше выносить в отдельные сервисы

Цитата Сообщение от Daniil Kray Посмотреть сообщение
is_published = models.IntegerField(default=0)
В джанго моделях есть удобное поле BooleanField
Python
1
is_published = models.BooleanField(default=False)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.03.2024, 16:34
Цитата Сообщение от dmittry Посмотреть сообщение
В джанго моделях есть удобное поле BooleanField
Только не все субд поддерживают bool.
0
96 / 64 / 34
Регистрация: 08.02.2021
Сообщений: 213
29.03.2024, 17:30
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Только не все субд поддерживают bool.
Так ОРМ же об этом позаботится. В базу ляжет 0 или 1, но не нужно будет делать проверок типа if value == 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.03.2024, 17:30
Помогаю со студенческими работами здесь

При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая картинка
На html языке отобразить картинку и кнопку.При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая...

При нажатии на кнопку вызывается диалог выбора цвета текста
Разработать Windows Forms приложение, содержащее RichTextBox и кнопку. При нажатии на кнопку вызывается диалог выбора цвета текста....

Не вызывается функция при нажатии кнопки
Добрый день господа программисты:) У меня возникла весьма не понятная ошибка, без вашей помощи не обойтись суть в том что есть форма ...

Событие вызывается только при повторном нажатии.
После передачи данных, в скрипте должно открыться окно в стиле- ПИСЬМО ОТПРАЛЕНО, а сама форма должна пропасть. Но при кликаньи на мышке...

При нажатии на кнопку программа должна закрыться
Почему программа не закрывается когда нажимаю на кнопку Exit? Buttons::Buttons(QWidget *parent) : QGroupBox(&quot;Colors&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru