假设我有一个屏幕看起来是这样的:
Times clicked: 0
[button]
每次我点击这个按钮,点击的时间就会增加1。我该怎么做呢?
发布于 2022-07-28 03:45:22
您已经用django和django表单标记了这个问题,所以我将忽略基于javascript的解决方案,并假设您希望这个问题是持久和通用的(因为每个用户都看到相同的数字)。
假设一个名为count_things的应用程序
从count/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
,以便使用该模型的表更新数据库
数数事物/视图
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>
这就是形式本身。它只是表单包装器中的提交按钮。
数数事物/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"))
]
添加适合的urls。这里应该是我们网站的第一页,没有文件名或文件夹名,例如,http://127.0.0.1:80000。
python manage.py runserver
启动服务器,然后访问服务器url
https://stackoverflow.com/questions/73145923
复制相似问题