Python Django没有返回新页面,也没有重新加载

时间:2015-06-12 11:53:11

标签: python django session

我有以下观点:

def addtolist(request):
  var1 = request.session.get('session_pmids', False)
  pmids = request.POST.get('pmids', '')
  pmids = pmids.split(",")

  if var1:
    pmids = pmids + var1
    request.session["session_pmids"] = pmids

  if not var1:
    request.session["session_pmids"] = pmids

  return HttpResponse(None, request)

在模板中我有以下内容:

    <form id="go" action="/addtolist/" method="post" data_url>{% csrf_token %}
    <input type="hidden" name="pmids" id="pmids" value="">
    <button class = "btn btn-default" onclick="getChecked()">Get selected abstracts as reference</button> 
    </form>

按下按钮将通过getChecked()函数检索一些数据。这将把数据添加到输入框&#39; pmids&#39;。这些将被转换为视图,变量将被添加到会话中。

我怎样才能让Django从视图中返回任何内容?所以,没有新页面,没有重新加载。只有请求对象(保持会话)

1 个答案:

答案 0 :(得分:4)

您不需要返回请求对象来保留会话数据。使用Ajax

在django

from django.http import JsonResponse

def addtolist(request):
  var1 = request.session.get('session_pmids', False)
  pmids = request.POST.get('pmids', '')
  pmids = pmids.split(",")

  if var1:
    pmids = pmids + var1
    request.session["session_pmids"] = pmids

  if not var1:
    request.session["session_pmids"] = pmids

  return JsonResponse({'status': 'ok')

的javascript

$('form#go').submit(function(e){
  e.preventDefault();
  $.post('view-url', $(this).serialize());
});

链接: