Python Django 没有返回新页面,也没有重新加载
Posted
技术标签:
【中文标题】Python Django 没有返回新页面,也没有重新加载【英文标题】:Python Django return no new page and no reload 【发布时间】:2015-08-28 10:13:26 【问题描述】:我有以下看法:
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() 函数检索一些数据。这会将数据添加到输入框“pmids”。这些将被投射到视图中,变量将被添加到会话中。
如何让 Django 从视图中不返回任何内容?所以,没有新页面,没有重新加载。只有请求对象(保持会话)
【问题讨论】:
你的意思是这样的? ***.com/a/28341345/940098 所以您建议制作一个 Ajaxable 响应对象并返回该响应?知道我只想返回请求的对象会是什么样子? (所以request.session["session_pmids"] = pmids
【参考方案1】:
您不需要返回请求对象来保留会话数据。使用 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')
$('form#go').submit(function(e)
e.preventDefault();
$.post('view-url', $(this).serialize());
);
链接:
jQuery AJAX submit form https://docs.djangoproject.com/en/1.8/ref/request-response/#jsonresponse-objects【讨论】:
我得到了 Forbidden (403) CSRF 验证失败。请求中止。我没有使用任何形式,我使用的是更新模型值的按钮以上是关于Python Django 没有返回新页面,也没有重新加载的主要内容,如果未能解决你的问题,请参考以下文章
如果 DRF 和 Django 过滤器中没有提供过滤,则返回空页面
Python Django之GET请求和POST请求及响应处理