帖子预览包含html字符

时间:2013-11-11 02:56:00

标签: python django

我有一个与这个人here非常相似的问题,除了我想使用python(我在django上开发我的网站)来显示我的帖子预览(大约100个字符)。如果您找到了办法,请与我分享一下吗?

编辑:(到目前为止我做了什么?)我尝试从原始帖子中提取前100个字符。像post [:100]之类的东西。它不是正确的解决方案,因为原始帖子的简单子字符串显然会包含未正确关闭的html语法。

EDIT2:我是django新手。实际上这是我在django上的第一个项目。 感谢

1 个答案:

答案 0 :(得分:1)

我不知道任何在线示例,但我确实有一个包含该功能的个人项目; agconti:stamped

如果您想要克隆并测试它,整个仓库链接在上面,但是与您的需求相关的代码将是;

Ajax帖子:

var send_data = { 'name': place.name, 'address': address};

var csrftoken = $.cookie('csrftoken'); 

function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
} 

$.ajaxSetup({
    crossDomain: false, // obviates need for sameOrigin test
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type)) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
            xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");
        }
    }
});


$.ajax({ url: '/results/',
    type: 'POST',
    data: send_data,
    success: function(response, status, jqXHR) {
      $("#results").html(response);
      //console.log('success function resp');
      //console.log(jqXHR.getAllResponseHeaders());
    },
    error: function(obj, status, err) { alert(err); console.log(err); }
  });

控制注入模板和正常页面查看的示例:

{% extends x|yesno:"stamped/blank.html,stamped/home.html" %}
{% load stamped_custom_tags %}
{% block results %}

<!-- Your HTML Here -->

<h1> title and stuff </h1>

<div> I contain things! </div>

{% endblock %}

home.html是我的index.html,其中包含#results div!

Blank.html

{% block results %}{% endblock %}

<!-- to allow for corrected shared rendering 
        with ajax posts and normal django rendering -->

任何渲染页面的正常django视图都会返回html,上面的ajax帖子会在ajax发布的页面上注入#results div(上面的例子中没有包含)。

根据您的评论进行修改:

我假设您真正希望在预览中显示的内容非常重要,比如文章的标题。对于呈现预览模板的预览,我会有一个单独的视图。在该模板中,我可以执行以下操作:

<!-- blank because this will be injected into your page -->

{{ article_title|truncatechars:9 }}

然后你可以将它注入你的页面并在鼠标上显示它。