Обновление экрана при нажатии кнопки Django
Допустим, у меня есть экран, который выглядит следующим образом:
Times clicked: 0
[button]
И каждый раз, когда я нажимаю на кнопку, время нажатия увеличивается на 1. Как мне это сделать?
Вы пометили этот вопрос как django и django forms, поэтому я проигнорирую решения на основе javascript и предположу, что вы хотите, чтобы это было постоянным и универсальным (чтобы каждый пользователь видел один и тот же номер)
предполагая, что приложение называется count_things
начните с count_things/models.py
from django.db import models
class Counter(models.Model):
count_num = models.PositiveSmallIntegerField(default=0)
name= models.CharField(max_length=255)
Это модель, которая будет инстанцирована в базе данных для хранения количества кликов
выполните python manage.py makemigrations
затем python manage.py migrate
для обновления базы данных с таблицей для этой модели
count_things/views.py
from django.http import HttpResponse
from django.shortcuts import render
def view_counter(request):
counter = Counter.objects.get_or_create(name="page_counter")
if request.method == "POST":
counter.count_num = counter.count_num + 1
counter.save()
return render(request, "count_things/count_clicker.html" {"counter":counter})
Это представление, которое обрабатывает добавление единицы к счетчику, когда форма отправлена. Мы не слишком беспокоимся о валидности формы, поскольку в нашей форме нет полей.
затем в вашем count_things/templates/count_things/count_clicker.html
<html>
<body>
<form method="POST">
{% csrf_token %}
<p>times clicked: {{counter.count_num}}</p>
<input type="submit" value = "Add one to me!">
</form>
</body>
</html>
Это сама форма. Это просто кнопка submit в обертке формы.
count_things/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.view_counter, name='view counter'),
]
urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include("count_things.urls"))
]
Добавьте урлы по своему усмотрению. Здесь это должна быть просто первая страница нашего сайта, без имени файла или имени папки, например, http://127.0.0.1:80000
python manage.py runserver
для запуска вашего сервера, затем посетите url вашего сервера