我需要向视图发送一个JavaScript变量,并根据该变量打开一个新页面。我已经使用ajax发送了变量,它运行得很好,但当我调用URL打开基于发送的变量的页面时,变量会得到None值。这是我的模板:
<a onclick="click(this.id)" id="author[i].name" href="{% url 'app:export-pdf' %}" >export pdf</a>
author[i].name
是我发送给它以这种方式查看的JavaScript变量:
function click(name){
$.ajax({
type: 'POST',
url: '{% url 'app:export-pdf' %}',
data: {'name': name },
});
};
如果需要,这是我观点的一部分:
@csrf_exempt
def battery_render_pdf_view(request):
name = request.POST.get('name')
print(name)
data = MyModel.objects.filter(name=name)
当我运行代码时,我会得到例如:
Mike
无
视图的名称为None,但必须获取Mike进行筛选。我的代码出了什么问题?(我认为发生这种情况是因为我调用了Url两次,但没有找到如何更正它。(
谢谢大家。
最后我找到了一个简单的方法,如下所示:
模板:
<a href="the path you want/{{this.id}}" id="author[i].name">export pdf</a>
网址:
path('pdf/<int:authorid>/', pdf_view, name='pdf-data')
在视图中,您可以使用kwargs:访问authorid
def pdf_view(request,**kwargs):
author = kwargs.get('authorid',None)
data = MyModel.objects.filter(name=author)