【问题标题】:using a part of Django URLs in views在视图中使用部分 Django URL
【发布时间】:2021-02-04 05:15:37
【问题描述】:

我需要向视图发送一个 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)

当我运行代码时,我会得到例如:

迈克

视图的名称为 None,但它必须使用 Mike 进行过滤。 我的代码有什么问题?(我认为这是因为我调用了 Url 2 次但我没有找到如何更正它。)

谢谢大家。

【问题讨论】:

  • 不要在锚标签中包含 url 标签。同样在 ajax 中,只使用 '/exportpdf' 之类的 url 路径,而不是 url 标签。
  • @RahulSalgare 我已经更改了我的 ajax url,但没有在锚标签中包含 url 标签,我怎样才能让锚标签打开新页面?谢谢。
  • 尝试返回 true。见这里stackoverflow.com/questions/1346043/…。您还可以在请求调用成功后更改 ajax 中的窗口位置。

标签: django url django-views django-templates django-urls


【解决方案1】:

最后我找到了一个简单的方法,如下所示:

模板:

<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)

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2013-10-30
    • 2013-08-08
    • 2014-12-16
    • 2013-08-13
    • 2017-06-15
    • 2012-03-10
    • 2012-10-13
    • 2021-12-20
    相关资源
    最近更新 更多