1

Я только что закончил создание системы комментариев пользователей в приложении для социальных сетей. Я строил Django (версия python 2.7.8, Django verion 1.6).Введенные пользователем ссылки отображаются как текст в Django

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

Кто-нибудь знает потенциальное решение этой проблемы?

models.py

class Comment(models.Model): 
    #Model that defines the Commenting system 
    created = models.DateTimeField(editable =False) 
    author = models.CharField(max_length = 200, editable = False) 
    body = models.TextField() 
    item = models.ForeignKey(BucketListItem) 

    def __unicode__(self): 
     return self.body 

комментарий-template.html

<h2>Comments:</h2> 
<br> 
{% if comments %} 
    {% for comment in comments %} 
     <div class = "comment-div"> 
      <h5>{% avatar comment.author 40 %}</h5> 
      <h5><a href = "/bucketlist/userstats/{{comment.author}}/"> {{comment.author}}</a></h5> 
      <h5 class ="timesince">{{ comment.created|timesince}} ago.</h3> 
      <br> 
      <br> 
      <p>{{comment.body}}</p> 
      {% if comment.author == current_user %} 
       <a href="/bucketlist/item/{{comment.id}}/delete-comment/"><span class = "fa fa-close"></span></a> 
      {% endif %} 
     </div> 
    {% endfor %} 
    <br> 
    <hr> 
    <br> 
{% else %} 
    <p>There are no comments yet. Be the first to add one!</p> 
{% endif %} 
<h5 class = "leave-comment">Leave a Comment Here: </h5> 
<br> 
<form action="/bucketlist/item/{{id}}/" method = "post" role = "form"> 
    <div class = "form-group"> 
     {% csrf_token %} 
     {% for field in form %} 
      {{ field.errors }} 
       {{ field }} 
      <br> 
     {% endfor %} 
     <br> 
     <input type = "submit" value = "Submit" class="btn btn-warning"> 
    </div> 
    <br> 
+0

Не могли бы вы показать связанную модель за комментариями и код шаблона, который отвечает за показ комментариев? Благодарю. – alecxe

+0

Там вы идете, я бы предпочел не использовать текстовый редактор wysiwyg, если это вообще возможно. –

ответ

8

Вы должны быть в состоянии сделать это с помощью the urlize template tag, что Django предоставляет.

<p>{{ comment.body | urlize }}</p> 

Это должно конвертировать любые ссылки в теле комментария к фактическому <a> тега.

+0

Это прекрасно работает, спасибо Кевину! Это именно то, что я искал. –