我如何覆盖django contrib评论模板?

时间:2012-01-30 20:54:07

标签: python django templates comments override

我正在使用的django contrib评论表单:

{% get_comment_form for post as form %}
<form action="{% comment_form_target %}" method="post">{% csrf_token %}
    {% if next %}
        <div><input type="hidden" name="next" value="{{ next }}" /></div>
    {% endif %}
    {% for field in form %}
        {% if field.is_hidden %}
            <div>{{ field }}</div>
        {% else %}
            {% if field.name == 'comment' %}
            {% if field.errors %}{{ field.errors }}{% endif %}
            <p
                {% if field.errors %} class="error"{% endif %}
                {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
                {{ field.label_tag }} {{ field }}
            </p>
            {% endif %}             
        {% endif %}
    {% endfor %}
    <p class="submit">
        <input type="submit" name="post" class="submit-post" value="{% trans "Post" %}" />
    </p>
</form>

提交表单后,它会重定向到http://127.0.0.1:8000/comments/posted/?c=..

这意味着它会调用模板django/contrib/comments/templates/comments/posted.html

django/contrib/comments/templates/comments/posted.html的内容:

{% extends "comments/base.html" %}
{% load i18n %}

{% block title %}{% trans "Thanks for commenting" %}.{% endblock %}

{% block content %}
<h1>{% trans "Thank you for your comment" %}.</h1>
{% endblock %}

这不会扩展我的项目的base.html。

我需要自定义/覆盖该模板,以便扩展我的项目的base.html。我怎么能这样做?

如果我不能这样做,那么如果我在服务器上传我的django web项目,那么我将如何编辑django/contrib/comments/templates/comments/posted.html的内容,使其看起来像这样:

{% extends "path/to/myproject/templates/base.html" %}
{% load i18n %}

{% block title %}{% trans "Thanks for commenting" %}.{% endblock %}

{% block content %}
<h1>{% trans "Thank you for your comment" %}.</h1>
{% endblock %}

在本地电脑上,我这次更改/编辑了django/contrib/comments/templates/comments/posted.html硬编码的内容,以扩展我的项目base.html

任何人都可以提出解决这个问题的想法吗?我已经搜索了很多来解决这个问题。

1 个答案:

答案 0 :(得分:8)

只需在项目的“模板”目录中覆盖它:

<project_root>/templates/comments/posted.html

在评论应用程序或Django的一般模板文档中似乎没有很好地记录它,但它的作用与overriding admin templates(记录在案)相同。