如何将JavaScript变量值传递到Django中的views.py函数?

3

我尝试将在我的HTML页面中从JavaScript标记生成的字符串发送到views.py函数。我将使用该值将其呈现到另一个HTML页面,另一个JavaScript将使用它。

这是解析JSON数据的变量:

var url = data.result.docs[i].source.enriched.url.url;

我希望能够将"url"发送到我的views.py函数中,但是我无法找到方法。

同时,我想保留一个链接,以便用户单击它时将"url"传递给views.py,并且我的函数将其发送到其他html文件。

sjd += "<br/>" + data.result.docs[i].source.enriched.url.title +
            '<a href="/rawHtmlText/url">' + ' Read more' + '</a>' + '<br>'

我希望我的页面上有这种链接。我知道urls.py应该有一个正确的模式,但我无法想出来。

也许可以使用jQuery,但我在这个领域是新手,所以卡在这里了。

请指导我。


在Django中,您可以像这样使用路由变量:GET "/rawHtmlText/:url",然后您可以在那里获取url。虽然我不熟悉Django,但我相信它应该有从路由中获取变量的功能。 - Prashanth Chandra
我感到困惑,因为我尝试了不同帖子中的不同解决方案,但没有一个有效。 - Sangit Dhanani
2个回答

6
最简单的方法可能是构建一个AJAX请求。尝试像这样做: ```javascript 最简单的方法可能是构建一个AJAX请求。尝试像这样做:```
<script type="text/javascript">
    $(document).ready(function() {
        var url = data.result.docs[i].source.enriched.url.url;
        $("#send-my-url-to-django-button").click(function() {
            $.ajax({
                url: "/process_url_from_client",
                type: "POST",
                dataType: "json",
                data: {
                    url: url,
                    csrfmiddlewaretoken: '{{ csrf_token }}'
                    },
                success : function(json) {
                    alert("Successfully sent the URL to Django");
                },
                error : function(xhr,errmsg,err) {
                    alert("Could not send URL to Django. Error: " + xhr.status + ": " + xhr.responseText);
                }
            });
        });
    });
</script>

假设您的页面上有一个按钮,如下所示:

<button type="button" id="send-my-url-to-django-button">Send URL to Django View</button>

点击该按钮应向您的Django视图发送url。然后在Django端,您可以像这样访问url:
def process_url_from_client(request):
    url = request.POST.get('url')

除了向视图传递值之外,我还想导航到其他HTML页面。因为其他JavaScript使用此URL调用其他API并在那里解析JSON。 - Sangit Dhanani
如果你想重定向,只需要在 alert("成功发送URL到Django"); 后面调用 window.location.replace('http://take-me-somewhere'); - Dirty Penguin
无法工作。是否可以保留<a href />标记而不是按钮? - Sangit Dhanani
当然。链接可以直接POST到您的视图,或者您可以使用AJAX异步处理。如果您决定使用AJAX,请记得调用preventDefault();:http://learn.jquery.com/events/event-basics/#preventdefault - Dirty Penguin

0
是的,你可以仅使用锚标签,但在这种情况下,你将发送像这样的数据
http://host/path_to_view.py/urlValueToSend。 这将是一个简单的get请求,并且URL将被发送到服务器。 由于它包含特殊字符,您可能需要编码URL。
var val = EncodeURI(url);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接