User entered links display as text in Django

2.1k Views Asked by At

I just finished creating a user commenting system on a social networking app I am building with Django (python version 2.7.8, Django verion 1.6).

Everything is working well with the commenting system, but I have encountered an issue. If a user submits a link to an external site in one of their comments, that link appears as plain text. I would like the user submitted link to automatically be viewed as a link to that other users can click on.

Does anyone know a potential solution to this problem?

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

comment-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>
1

There are 1 best solutions below

0
On BEST ANSWER

You should be able to do this using the urlize template tag that Django provides.

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

This should convert any links within the body of the comment to an actual <a> tag.