【问题标题】:How to use ajax request to send friend request in views.py without reloading page如何在views.py中使用ajax请求发送好友请求而不重新加载页面
【发布时间】:2021-06-01 13:53:23
【问题描述】:

由于我对 ajax 请求的了解有限,我编写了这个函数,它使用 get 请求在按下添加按钮时发送好友请求,但是当我运行本地主机时,代码似乎不起作用,我不能找出原因。

HTML模板:

{% extends "posts/base.html" %}
{% load crispy_forms_tags %}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
 $('.btn btn-sm btn-circle mt-1 mb-1').click(function(){
      var values;
      values= $(this).attr("value");
            $.ajax({
                url: 'friends/add-friend/',
                data: {
                  username:values
                },
                type: "GET",
            });
        }
        </script>
        {% block content %}
<div class="container">
<div class="row">
<div class="col-sm-9 col-md-7 col-lg-5 mx-auto">
<form method="POST" class="form-signin">
            {% csrf_token %}
            <div class="form-label-group">
            {{ form|crispy }}
            </div>
            <button class="btn btn-lg btn-primary btn-block text-uppercase" type="submit">Search</button> 
            </form>
            <div>
            <article class="media content-section">
            <img class="rounded-circle article-img" src="{{ results.profile.image.url }}">
            <a class="mr-2" href="#">{{ results.username }}</a>
            <div class="media-body">
            <div class="article-metadata">
            <button class="btn btn-sm btn-circle mt-1 mb-1" onclick="add-friend" value="{{ results.username }}">+</button>
            </div>
              </div>
              </div>
            </div>
            </div>
            </div>
{% endblock content %}

Views.py:

from django.shortcuts import render
from .models import AddFriend
from django.contrib.auth.models import User
from users.models import Profile


def SearchDetail(request):
    Ruser= None
    if request.method == 'GET':
        username= request.GET['username']
        Ruser= User.objects.get(username=username)
        NewFriendRequest=None
        NewFriendRequest=AddFriend.objects.create(sender=request.user,receiver=Ruser)
        NewFriendRequest.save()
        messages.success(request, f'Your friend request has been sent successfully!')

网址.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('users.urls')),
    path('posts/home.html', p_views.PostsListView.as_view(), name='posts-home'),
    path('friends/search.html', f_views.search, name='friends-search'),
    path('friends/add-friend/', f_views.SearchDetail, name='friends-search-detail'),
]

【问题讨论】:

    标签: javascript python jquery django ajax


    【解决方案1】:

    试试这个

    <script>
    $('.btn-circle').click(function(){ //fix jQuery class selector
        var values;
        values= $(this).attr("value");
        
        $.ajax({
            url: 'friends/add-friend/',
            data: {
                username:values
            },
            type: "GET",
        });
    }); // you were missing closing braces here
    </script>
    

    中删除onclick="add-friend"
    <button class="btn btn-sm btn-circle mt-1 mb-1"  value="{{ results.username }}">+</button>
    

    Ref

    【讨论】:

    • 感谢您的帮助,但是当我使用您的代码时,它仍然无法正常工作
    • 浏览器控制台中的任何错误?你没有带有 btn-circle 类的 div 元素吗?
    猜你喜欢
    • 2020-09-07
    • 1970-01-01
    • 2016-04-14
    • 2014-02-16
    • 2022-07-06
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多