我正在尝试下载BBC网站的热门故事。并将它们显示在HTML网页上。以前我试过通过javascript中的ajax来做到这一点。但是,我得到的错误是:
“XMLHTTPRequest无法加载我的页面,因为请求的资源上没有'Access-Control-Allow-Origin'标头。因此不允许访问。”
我做了一些研究,发现当我在Django中这样做时,我需要使用我的views.py文件从URL请求对象,而不是ajax。
我今天大部分时间一直没有成功,所以想知道是否有人可以帮助我或转发给我一些可以的链接!
我目前的代码如下:
News.js:
$(document).ready(function(){
function an(){
$("#TopNews").append("<ul></ul>");
$.ajax({
type: "GET",
url: "http://rss.cnn.com/rss/cnn_topstories.rss",
dataType: "xml",
success: function upon_success ( xml ) {
if(response.status === "success"){
$(xml).find('item').each(function(){
var Titles = $(this).find('title').text();
$("<li></li>").html(Titles).appendTo("#TopNews ul");
});
}
else if (response.status === "error"){
alert("The XML File could not be processed correctly.");
}
}
});
};
$("#btn").click(an);
});
Html:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src={% static "js/News.js" %}></script>
</head>
<body>
<h1>Top News: BBC versus CNN</h1>
<input type="submit" id="btn" value="Refresh"></imput>
<ul id="TopNews"></ul>
</body>
</html>
Views.py:views
答案 0 :(得分:0)
您可以使用Python requests library之类的内容在views.py中创建请求(您的pic.view图片看起来像urls.py):
import requests
def your_view(request):
xml_news = requests.get('<your url>')
news = #maybe some parsed version of your xml
return render(request, 'your_page.html', {'news': news})
然后,您可以更改模板以包含以下内容:
{% for item in news %}
<li>{{ item }}</li>
{% endfor %}
否则,请使用您的javascript将xml添加到您的页面中,就像您在示例中一样。