【问题标题】:Ajax in django doesnt work, no error and nothing happensdjango 中的 Ajax 不起作用,没有错误,也没有任何反应
【发布时间】:2021-10-14 20:50:45
【问题描述】:

解决方案: 我的错误是 url 属性不只是将给定的字符串添加到 127.0.0.1 而是添加到当前 url,因此 Like 视图的 url 应该是 127.0.0.1/article/article_id/like-article-commm

我编写了一个包含文章的 django 应用程序,我试图添加类似的功能,我在底部添加了代码,但没有任何反应。没有错误,只是数据库中没有任何内容或 html 代码更改。知道是什么问题吗?

html/javascript代码的相关部分:

    <head>
            <script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
        </head>

        <button id='like-button' color = 'black'> Like </button>

<script type="text/javascript"> 
$('#like-button').click(function(){ 
var article_id = '{{ article.id }}';
var user_id = '{{ user.id }}';
var like_dislike = True;

$.ajax( 
{ 
    type:"GET",
    url: "like-article-commm",
    data:{ 
             article_id: article_id,
             user_id: user_id,
             like_dislike: like_dislike
}, 
success: function( data ) 
{ 
    $('#like-button').css('color', 'blue'); } }) });
</script>

The like-article-comm View:
def Like_Article_View(request):
    if request.method == 'GET':
        article_id = int(request.GET['article_id'])
        likedarticle = Article.objects.get(id = article_id)
        
        user_liked_id = int(request.GET['user_id'])
        userliked = User.objects.get(id = user_liked_id)

        like_dislike_0 = request.GET['like_dislike']

        like_object_list = Like_Article.objects.filter(article_liked = likedarticle, user_liked = userliked)

        if like_object_list.count() > 0:
            existing_like = like_object_list.filter()
            if existing_like.like_dislike == like_dislike_0:
                return HttpResponse('success')
            existing_like.like_dislike = like_dislike_0
            existing_like.save()




        like_new_object= Like_Article(article_liked=likedarticle, user_liked=userliked, like_dislike=like_dislike_0)
        like_new_object.save()

        return HttpResponse('success')
    else:
        return HttpResponse("unsuccesful")

urls.py 文件:

from django.urls import path
from . import views
from .views import ArticleListView, ArticleDetailView, ArticleCreateView, ArticleUpdateView, ArticleDeleteView

urlpatterns = [
    path('', ArticleListView.as_view(), name="home-comm"),
    path('article/<int:pk>/', ArticleDetailView.as_view(), name="article-comm"),
    path('like_article/', views.Like_Article_View, name='like-article-commm'),
]

我可以手动将类似的对象添加到数据库中。

【问题讨论】:

    标签: javascript python django ajax


    【解决方案1】:

    --更新--
    经过一番讨论,我们发现前端 ajax 没有与后端正常通信。借助 chrome devtools,我们设法查明了问题所在。

    您是否启用了 CORS 跨站资源共享?

    【讨论】:

    • 我不知道那是什么,所以可能不是。如何检查是否启用以及如何启用?
    • 对不起,我无法在您的帖子下做出澄清,因此我用另一个问题回答您的问题。回到你的问题,我想你可以参考这个问题link 作为初学者
    • 简单来说,django 服务于端口,比如说 5000(我使用的是另一个 python web 框架,所以不太确定 django),但是您的浏览器从不同的端口发出异步请求/ origin,这可能是对您服务器的恶意请求,因此几乎每个 Web 框架都隐含地禁用了 CORS。
    • 我添加了 CORS 但它并没有解决问题
    • 你能告诉我你的控制台日志吗?您可以从 chrome 开发工具访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多