2017-02-19 1 views
0

Я пытаюсь загрузить лучшие истории сайта BBC. и отображать их на веб-странице HTML. ранее я пытался сделать это через ajax в javascript.However, я получаю сообщение об ошибке:Ajax Jquery Запрос данных xml необходимо запустить в конец в django

«XMLHTTPRequest не может загрузить мою страницу, поскольку заголовок« Access-Control-Allow-Origin »присутствует на запрошенном ресурсе.cso поэтому не допускается доступ ».

Я сделал еще несколько исследований и обнаружил, что, поскольку я делаю это в Django, мне нужно запросить объект из URL, используя мой файл views.py, а не ajax.

Я искал большую часть сегодняшнего дня, без каких-либо успехов, поэтому задавался вопросом, может ли кто-нибудь помочь мне или отправить меня на некоторые ссылки, которые могут!

Мой текущий код выглядит следующим образом:

News.js:

$(document).ready(function(){ 
 
\t 
 
\t function an(){ 
 
\t \t $("#TopNews").append("<ul></ul>"); 
 
\t \t $.ajax({ 
 
\t \t \t type: "GET", 
 
\t \t \t url: "http://rss.cnn.com/rss/cnn_topstories.rss", 
 
\t \t \t dataType: "xml", 
 
\t \t \t success: function upon_success (xml) { 
 
\t \t \t \t if(response.status === "success"){ 
 
\t \t \t \t \t $(xml).find('item').each(function(){ 
 
\t \t \t \t \t \t var Titles = $(this).find('title').text(); 
 
\t \t \t \t \t \t $("<li></li>").html(Titles).appendTo("#TopNews ul"); 
 
\t \t \t \t \t }); 
 
\t \t \t \t } 
 
\t \t \t \t else if (response.status === "error"){ 
 
\t \t \t \t \t alert("The XML File could not be processed correctly."); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t }); 
 
\t }; 
 

 
\t $("#btn").click(an); 
 
});
Html: 
 

 
{% load staticfiles %} 
 
<!DOCTYPE html> 
 
<html> 
 
\t <head> 
 
\t \t <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> 
 
\t </head> 
 
\t <body> 
 
\t \t <h1>Top News: BBC versus CNN</h1> 
 
\t \t <input type="submit" id="btn" value="Refresh"></imput> 
 
\t \t <ul id="TopNews"></ul> 
 
\t </body> 
 
</html>

views.py: views

ответ

0

Вы можете сделать запрос в views.py (ваш рисунок view.py выглядит как urls.py), используя что-то вроде Python requests library:

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 на страницу, как у вас есть в вашем примере.