首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在使用Ajax时,我的get_context_data不能正确地将上下文传递给HTML

在使用Ajax时,我的get_context_data不能正确地将上下文传递给HTML
EN

Stack Overflow用户
提问于 2018-05-28 08:47:48
回答 2查看 91关注 0票数 0

我试图从HTML获取一个值到Django CBV,所以我使用了Ajax。通过代码self.request.GET.get('tab_keyword'),我从HTML中获得一个值,并将其放入context['keyword']中。当我在HTML上用{{ keyword }}检查该值时,它什么也没有显示。我还仔细检查了tab_keyword在控制台上打印出的值。

为了调试它,我手动将一个字符串值放入关键字中,{{ context['keyword'] }}正确地显示了我需要的内容。通过调试,我非常确定self.request.GET.get('tab_keyword')或我的Ajax代码中存在问题。

有人能帮我解决这个问题吗?

def get_context_data(self, **kwargs):
    context = super().get_context_data()
    tab_keyword = self.request.GET.get('tab_keyword')

    if self.request.is_ajax():
        if tab_keyword == '#':
            tab_keyword = None
    else:
        tab_keyword = None

    context['keyword'] = tab_keyword 

    return context

Ajax

$('.load-more-btn').on('click', function(e) {
    e.preventDefault()
    $.ajax({
      type: 'GET',
      url: '/',
      data: {
        tab_keyword: '#' + $('.nav-link.active.show').html(),
        csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
      },
      success:function() {}
    })
  })

urls.py

url(r'^$', views.StoreListView.as_view(), name='index'),
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 09:49:21

ajax使用POST方法,那么应该在get_context_data中使用tab_keyword = self.request.POST.get('tab_keyword')

票数 1
EN

Stack Overflow用户

发布于 2018-05-28 09:13:49

如果我想把tab_keyword从html转到Django,我会建议如下:

view.py

def get_context_data(request):
    tab_keyword = request.GET['tab_keyword']
    # do something...
return JsonResponse(mydict)

希望能有所帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50557827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档