Django-Ajax 给出错误“方法不允许(POST):/post/like/”

年轻的头脑1

我是 django 的新手,我第一次使用 ajax 和 django。我尽力在这里和那里搜索,但我无法找到解决方案

这个答案也没有帮助

不允许 Django 和 ajax 请求方法(POST)

我得到的错误是

Method Not Allowed (POST): /post/like/
[07/Jun/2019 16:06:16] "POST /post/like/ HTTP/1.1" 405 0

下面是代码

likes_section.html

{% if request.user.is_authenticated %}
<form  action="{% url 'like_post' %}" method="post">
  {% csrf_token %}

  {% if is_liked %}
  <span class="mr-2" style="color:black;">{{ post.total_likes }} Like{{ post.total_likes|pluralize }}<button type="submit" id="like_the_post_by_user" class="btn btn-primary ml-2" name="post_id" value="{{ post.id }}">DisLike</button></span>
  {% else %}
  <span class="mr-2" style="color:black;">{{ post.total_likes }} Like{{ post.total_likes|pluralize }}<button type="submit" id="like_the_post_by_user" class="btn btn-primary ml-2" name="post_id" value="{{ post.id }}">Like</button></span>
  {% endif %}
</form>
{% else %}
  <span class="mr-2">{{ post.total_likes }} Like{{ post.total_likes|pluralize }}<button type="submit" id="like_the_post_by_user" class="btn btn-primary ml-2" name="post_id" value="{{ post.id }}" disabled>Like</button>Please Login to enable Like button</span>
{% endif %}

阿贾克斯

$(document).ready(function(event){
    $(document).on('click',"#like_the_post_by_user", function(event){
      event.preventDefault();
      console.log($("#like_the_post_by_user").val())
      console.log("from jquery section")
      var pk = $(this).attr('value');
      $.ajax({
        type : "POST",
        url : "{% url 'like_post' %}",
        data : {'id': pk , "csrfmiddlewaretoken": '{{ csrf_token }}' },
        dataType : 'json',
        success : function(response){
          $('#like-section_user').html(response['form'])
          console.log($('#like-section_user').html(response['form']));
        },
        error : function(rs, e){
          console.log(rs.responseText);
        }

      });

    });

  });

网址.py

urlpatterns = [
    path('', PostListView.as_view(),name="blog-home"),
    path('post/<int:pk>/', PostDetailView.as_view(),name="post-detail"),
    path('post/new/', PostCreateView.as_view(),name="post-create"),
    path('post/<int:pk>/update/', PostUpdateView.as_view(),name="post-update"),
    path('post/<int:pk>/delete/', PostDeleteView.as_view(),name="post-delete"),
    path('user/<str:username>/', UserPostListView.as_view(),name="user-posts"),
    path('post/<str:category>/', CategoryListView.as_view(),name="category-posts"),
    path('about/', AboutListView.as_view(),name="about"),
    #path('users/myposts/', ActiveUserPostDetailView.as_view(),name="my-blogs"),
    path('feedback-email/', views.feedback_email,name="feedback-email"),
    path('post/like/', views.like_post,name="like_post"),
]

视图.py

def like_post(request):
    #post = get_object_or_404(Post,id=request.POST.get("post_id"))
    if request.method == 'POST':
        print('method is {}'(request.method))
    print("\ninside like view\n")
    print("\n in {} \n".format(request.POST.get('id')))
    post = get_object_or_404(Post,id=request.POST.get("id"))

    is_liked = False
    if post.likes.filter(id=request.user.id).exists():
        print("\ninside like\n")
        post.likes.remove(request.user)
        is_liked = False
    else:
        print("\ninside dislike\n")
        post.likes.add(request.user)
        is_liked = True
    comments = Comment.objects.filter(post=post,reply=None).order_by("-id")
    context = {
    "post":post,
    "is_liked":is_liked,
    "comment": comments
    }
    #return redirect("post-detail",pk=request.POST.get("post_id"))
    print("\ngetting in ajax\n")
    if request.is_ajax():
        print("\ninside ajax\n")
        html = render_to_string('blog/likes_section.html', context, request=request)
        return JsonResponse({"form":html})

任何帮助将不胜感激 !

提前致谢

丹尼尔罗斯曼

您的“/post/like” URL 与 CategoryListView 的 URL 模式匹配,因为它是“post”加上一个字符串。

正如您对帖子详细信息视图所做的那样,将 like 视图的模式放在 URL 列表的前面,以便它首先匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

$ .ajax在$ .post正常时给出错误503-Django

来自分类Dev

Django:不允许的方法(POST):

来自分类Dev

不允许使用Django + Angular方法PUT和POST

来自分类Dev

Django Rest Framework不允许方法“POST”

来自分类Dev

ajax中的POST方法给出错误“非法调用”?

来自分类Dev

JQuery Ajax POST到Web API返回405方法不允许

来自分类Dev

尝试发布AJAX请求时的POST 405(不允许使用方法)-Laravel 4

来自分类Dev

JQuery Ajax POST到Web API的返回405方法不允许

来自分类Dev

在DJANGO中的AJAX POST期间出错

来自分类Dev

对API的Ajax调用返回错误HTTP / 1.1 405方法不允许

来自分类Dev

Django Rest Framework-CreateAPIView不允许使用POST方法

来自分类Dev

带有额外操作和ModelViewset的Django rest框架不允许使用方法“ POST”

来自分类Dev

Django,不允许使用post方法(405)详细信息视图

来自分类Dev

除非规则首先出现,否则不允许 Django POST 405 方法

来自分类Dev

405 方法不允许使用 Resteasy 和 ajax

来自分类Dev

类型错误:总和不允许不同(Django)

来自分类Dev

ajax django 403禁止错误

来自分类Dev

Django - ajax 调用条件方法

来自分类Dev

Laravel 5.1 AJAX-即使我正在发送POST请求,也不允许返回405 GET方法

来自分类Dev

Ajax不允许View渲染

来自分类Dev

POST方法是ajax给出400(错误请求)

来自分类Dev

Django不允许创建项目

来自分类Dev

Django LoginRequiredMixedIn不允许用户登录

来自分类Dev

Django不允许创建项目

来自分类Dev

AJAX Post无法使用Django成功捕获

来自分类Dev

无法在Django中运行AJAX POST

来自分类Dev

jQuery ajax请求在laravel应用中返回405(不允许POST)

来自分类Dev

Django,如何强制返回ajax错误?

来自分类Dev

Ajax发布从Django返回CSRF错误

Related 相关文章

热门标签

归档