Шаблон Django, показывающий код

#javascript #python #django

#javascript #python #django

Вопрос:

Эй, ребята, я вне себя от разочарования / истощения, пытаясь исправить этот код Unicode, отображаемый на моей веб-странице. Я перепробовал все, что мог придумать. Вот как выглядит моя страница, ее данные очищены от статей news.google.com и показано на моей странице с указанием времени отправки (время отправки — это то место, где u200e появляется повсюду) http://i.imgur.com/lrqmvWG.jpg

Я собираюсь предоставить свой views.py , мой articles.html (страница на картинке, которая настроена для отображения всего), и header.html (по какой бы то ни было причине. Но это родительский шаблон articles.html для наследования CSS). Кроме того, я исследовал и знаю, что это метка слева направо, и когда я проверяю источник в news.google.com , он появляется в элементе time submission как

 amp;lrm;
  

вот так:

 <span class="al-attribution-timestamp">amp;lrm;‎51 minutes ago‎amp;lrm;</span>
  

Я попытался отредактировать views.py чтобы закодировать его, используя .encode(encoding=’ascii’,’ignore’) или utf-8 или iso-8859-8 и пару других строк кода, которые я нашел в Google, но он по-прежнему отображается везде. Я поместил его во множество разных частей моего views.py слишком даже сразу после цикла for (и прямо перед после того, как он будет сохранен как данные в переменной «b», и он просто не исчезнет. Что мне нужно сделать?

Views.py

 def articles(request):
""" Grabs the most recent articles from the main news page """
import bs4, requests
list = []
list2 = []
url = 'https://news.google.com/'
r = requests.get(url)
sta = "amp;lrm;"
try:
    r.raise_for_status() == True
except ValueError:
    print('Something went wrong.')
soup = bs4.BeautifulSoup(r.text, 'html.parser')
for listarticles in soup.find_all('h2', 'esc-lead-article-title'):
    a = listarticles.text
    list.append(a)
for articles_times in soup.find_all('span','al-attribution-timestamp'):
    b = articles_times.text
    list2.append(b)
list = zip(list,list2)

context = {'list':list, 'list2':list2}
return render(request, 'newz/articles.html', context)
  

articles.html

     {% extends "newz/header.html" %}

{% block content %}
<script>
    .firstfont (
    font-family: serif;
    }
</script>


<div class ="row">
<h3 class="btn-primary">These articles are scraped from <strong>news.google.com</strong></h3><br>

<ul class="list-group">
{% for thefinallist in list %}
   <div class="col-md-15">
       <li class="list-group-item">{{ thefinallist }}
       </li>
   </div>
{% endfor %}
</div></ul>
{{ list }}
{% endblock %}
  

header.html

     <!DOCTYPE html>
<html lang="en">
<head>
    <title>Sacred Page</title>
    <meta charset="utf-8" />
    {% load staticfiles %}
    <meta name="viewport" content = "width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{% static 'newz/css/bootstrap.min.css' %}" type = "text/css"/>
    <style type="text/css">
        html,
        body {
          height:100%
        }
    </style>

</head>



<body class="body" style="background-color:#EEEDFA">
    <div class="container-fluid" style="min-height:95%; ">
        <div class="row">
              <div class="col-sm-2">
                  <br>
                  <center>
                    <img src="{% static 'newz/img/profile.jpg' %}" class="responsive-img" style='max-height:100px;' alt="face">
                  </center>
              </div>
              <div class="col-sm-10">
                  <br>
                  <center>
                  <h3><font color="007385">The sacred database</font></h3>
                  </center>
              </div>
        </div><hr>

        <div class="row">
          <div class="col-sm-2">
          <br>

          <br>
           <!-- Great, til you resize. -->
            <!--<div class="well bs-sidebar affix" id="sidebar" style="background-color:#E77200">-->
            <div class="well bs-sidebar" id="sidebar" style="background-color:#E1DCF5">
              <ul class="nav nav-pills nav-stacked">
                <li><a href='/'>Home</a></li>
                <li><a href='/newz/'>News database</a></li>
                <li><a href='/blog/'>Blog</a></li>
                <li><a href='/contact/'>Contact</a></li>
              </ul>
            </div> <!--well bs-sidebar affix-->
          </div> <!--col-sm-2-->
          <div class="col-sm-10">

            <div class='container-fluid'>
            <br><br>
                <font color="#2E2C2B">
               {% block content %}
               {% endblock %}
                {% block fool %}
                {% endblock fool %}
                </font>
            </div>
          </div>
        </div>
    </div>
    <footer>
        <div class="container-fluid" style='margin-left:15px'>
            <p><a href="#" target="blank">Contact</a> | <a href="#" target="blank">LinkedIn</a> | <a href="#" target="blank">Twitter</a> | <a href="#" target="blank">Google </a></p>
        </div>
    </footer>

</body>

</html>
  

Ответ №1:

Если вы хотите, вы можете использовать replace() для удаления символа из вашей строки.

 b = articles_times.text.replace('u200E', '')
  

Причина, которую вы видите u200E в отображаемом html вместо amp;lrm; , заключается в том, что вы включаете кортеж {{ thefinallist }} в свой шаблон. Это означает, что Python вызывает repr() кортеж, и вы видите u200E . Это также означает, что вы видите круглые скобки, например ('headline' 'u200e1 hour ago')

Если вы отобразите элементы кортежа отдельно, то вместо этого вы попадете amp;lrm; в шаблон. Например, вы могли бы сделать:

 {% for headline, timeago in list %}
    <div class="col-md-15">
        <li class="list-group-item">{{ headline }} {{ timeago }}
        </li>
    </div>
{% endfor %}
  

Комментарии:

1. О, мой … боже. Спасибо