Django admin中的换行符将被HTML换行符替换

Django admin中的换行符将被HTML换行符替换,django,django-templates,django-admin,Django,Django Templates,Django Admin,我正在尝试将一些HTML模板包括到我的一个模型的django change_form.HTML默认模板中。 我的主要目标是在Django后端创建一些图表 我遇到的问题是,不知何故,新行不断被替换为。 这尤其麻烦,因为它会破坏我实际上感兴趣的包含在页面上的JavaScript代码 目前,我的方法是在ModelAdmin类上使用readonly\u字段,并在模型中使用一个函数,该函数返回模板的render\u to\u字符串 我的模型 class Link(models.Model):

我正在尝试将一些HTML模板包括到我的一个模型的django change_form.HTML默认模板中。 我的主要目标是在Django后端创建一些图表

我遇到的问题是,不知何故,新行不断被替换为

。 这尤其麻烦,因为它会破坏我实际上感兴趣的包含在页面上的JavaScript代码

目前,我的方法是在ModelAdmin类上使用
readonly\u字段
,并在模型中使用一个函数,该函数返回模板的
render\u to\u字符串

我的模型

class Link(models.Model):
        user = models.ForeignKey(
            'auth.User',
            verbose_name=_('Author'),
            related_name="tinylinks",
        )

        link = models.CharField(
            max_length=2500,
            verbose_name=_('Link'),
        )

        clicks = models.PositiveIntegerField(
            default=0,
            verbose_name=_('Amount of views'),
        )

        def click_statistics(self):
            response = render_to_string(
                'admin/links/link/click_statistics.html', {})
ModelAdmin类

class LinkAdmin(admin.ModelAdmin):
    list_display = ('link', 'user', 'clicks')
    search_fields = ['link', 'user']

    readonly_fields = ('click_statistics',)

    fieldsets = [
            ('Link', {'fields': ['user', 'link', 'clicks',]}),
            ('Statistics', {'fields': ['click_statistics',]}),
    ]
这将是click_statistics.html

<table border="0" cellspacing="">
    <tr>
        <td valign="top">
            <div id='stat_line' class='stats_line line' style='display:block'>
                <script id="graphstat_line" type="text/javascript">
                    function graphstat_line() {
                        var data = google.visualization.arrayToDataTable([]);

                        var options = {
                            'legend': "none",
                            'pointSize': 3,
                            'theme': "maximized",
                            'curveType': "function",
                            'width': 430,
                            'height': 220,
                            'hAxis': {minTextSpacing: 80, maxTextLines: 1, maxAlternation: 1},
                            'vAxis': {minValue: -0.5, format: '#'},
                            'colors': ['#2a85b3']
                        }

                        new google.visualization.LineChart( document.getElementById('visualization_stat_line') ).draw( data, options );}
                        google.setOnLoadCallback( graphstat_line );
                </script>
                <div id="visualization_stat_line"></div>
            </div>
        </td>
    </tr>
</table>

函数图stat_line(){
var data=google.visualization.arrayToDataTable([]);
变量选项={
'图例':“无”,
“点大小”:3,
'主题':“最大化”,
“curveType”:“函数”,
“宽度”:430,
身高:220,
'hAxis':{minTextSpacing:80,maxTextLines:1,maxAlternation:1},
'vAxis':{minValue:-0.5,格式:'#'},
“颜色”:[“#2a85b3”]
}
新的google.visualization.LineChart(document.getElementById('visualization_stat_line')).draw(数据,选项);}
setOnLoadCallback(graphstat_行);
我的问题如下:

  • 当render_to_字符串的输出包含在admin change_form.html模板中时,为什么要用

    替换换行符
  • 有没有办法阻止这种行为

你用的是django套装吗?如果是这样,那么问题出在模板
suit/templates/admin/includes/fieldset.html

    {# If multi-fields and wrap controls too #}
     {% if not singlefield %}
        <div class="multi-field-controls">
      {% endif %}

    {% if field.is_readonly %}
        <span class="readonly">{{ field|field_contents_foreign_linked|linebreaksbr }}</span>
    {% else %}
        {{ field.field }}
    {% endif %}

    {# For single field errors#}
    {% if singlefield and line.errors %}
        <span class="help-inline">{{ line.errors }}</span>
    {% endif %}
{#如果多字段和换行控件太多#}
{%如果不是单字段%}
{%endif%}
{%if field.is_readonly%}
{field | field | contents | foreign | linked | linebreaksbr}}
{%else%}
{{field.field}
{%endif%}
{#对于单字段错误#}
{%if singlefield和line.errors%}
{{line.errors}}
{%endif%}
将该模板复制到安装的应用程序中较高的应用程序中,或复制到模板目录(so
template\u DIR/admin/includes/fieldset.html
)中列出的目录中,并从上面的行中删除
;linebreaksbr


几个月前我遇到了这个问题,完全是意外地找到了解决方案。

“Django”不会这样做。您的代码正在以某种方式执行此操作。但是由于您没有发布任何消息,我们无法帮助您修复。感谢您的回复Daniel,我将用代码更新我的问题。我也遇到了这个问题。看来肯定是Django的错。当我在admin方法中打印值时,它看起来很好,但返回到浏览器的结果包含“
”。非常令人沮丧。我的破解方法是自己替换所有换行符,并确保内联JS代码的格式正确,可以作为一行进行计算。还有,不要介意罗斯曼的粗鲁。他有点傲慢。谢谢你,瑟林,很高兴知道这是别人经历过的事情。最后,我走了一条完全不同的道路,不再尝试在管理员中添加该模板。