Python, Django, HTMX, is it possible to save data, when a user clicks <button>

When a user click <button> on index page, can save data immediately?

def index(request):
    context = { ... }
    response = render(request, 'docu/index.html', context)

    ### Save visitors' IP and Keywords to KeyLOG table ###
    ip = request.META.get('REMOTE_ADDR')
    keywords = request.META.get('HTTP_REFERER', '')
    keylog = KeylogForm(request.GET)
    keylog =
    keylog.ipaddr = ip
    keylog.keyquery = keywords

    return response

def keylog(request):
    if request.method == "GET":
        keylog_list = list(Keylog.objects.all().order_by()\
            .values('idpaddr', 'keywords', 'tel_log', 'regtime'))
        return JsonResponse(keylog_list, safe=False)
    return JsonResponse({'message':'error'})

class KeylogForm(forms.ModelForm):
    class Meta:
        model = Keylog
    fields = ['ipaddr','keyquery','tel_log']

class Keylog(models.Model):
    ipaddr = models.CharField(max_length=32,null=True, blank=True) #save IP addr
    keyquery = models.CharField(max_length=128,null=True, blank=True) #save keywords
    tel_log = models.CharField(max_length=256,null=True, blank=True) #save tel_log
    regtime = models.DateTimeField(auto_now_add=True) #created time

Currently, it makes table as below;

Ipaddr keyquery tel_log regtime
192.168.x.yy ?query=apple 2023. ?query=banana 2023.

I hope to save Tel_log data in the above table, when a user clicks <butto>...</button>.

So I made an index.html as below;


<div id="tel_log">
    <button class="btn btn-danger">
    Phone NUMBER

My expectation is that when I clicked [Phone NUMBER] on the index page, "CALL" is appeared on the "tel_log" column of the above table, but it didn't work, just shows {message:error}

I'm a newbie on programming, so my approach for my needs may be wrong, but I'm really eager to make a web site for now, especially on this question. I also did try to use Ajax, but I didn't get any response also.

Thank you for all.

Click [button], save data in real time on the column of the table.

Back to Top