Обновление экрана при нажатии кнопки 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 вашего сервера

Вернуться на верх