切片Django

时间:2015-05-13 18:02:42

标签: django django-template-filters

有没有办法(使用Django过滤器或任何其他语言)查找和切片动态生成的字符串的某些部分?我尝试过切片方法和截断方法

{{variable | slice:" 130:-60"}}或 {{variable | truncatechars:255}}

但这些方法都没有完全正确.....我正在研究天气警报(由国家气象局提供),每个警报都在前面和(有时)在后面带有一个唯一的ID。

唯一ID#和长度在60到130个字符之间变化,最后的ID是经度和纬度,但它只包括大约1/2的时间。

所以我正在寻找/正在研究代码,以及#34;嗅探"并删除唯一ID,并仅提供供用户查看的文字。

这样做的正确方法是什么?

以下是警告的示例:

INC077-437-75584393- / 09584738.EGY / W.0027 // KT.0215401321 / 1100 AM CDT WED 2015年5月13日在奥兰多佛罗里达附近的密西西比河上将继续淹没。 从晚上到晚上在上午6点结束时,舞台的时间是30.5英尺。 洪水阶段是30.6英尺晚上1000点的影响,一些水开始填充一些东西。 &安培;&安培; LAT ... LON 4125 5845 5458 6548 8964 5124 1234 8706 $$

和代码(我调用变量)我希望它是:

上午11点CDT WED 2015年5月13日在奥兰多佛罗里达附近的密西西比河将继续淹没。 从晚上到晚上在上午6点结束时,舞台的时间是30.5英尺。 洪水阶段是30.6英尺晚上1000点的影响,一些水开始填满一些水。

但是我无法剪切或截断,因为每个天气警报的长度都不同,每个唯一ID都是不同的#和不同的长度。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您可以为模型添加自定义方法,例如:

class Weather(models.Model):
    alert = models.TextField()

    @property
    def get_id(self):
        return self.alert.split('/')[-1]

在你的模板中:

<p>{{ weather.get_id }}</p>

您还可以创建自定义模板过滤器:

from django import template

register = template.Library()

@register.filter(name='get_id')
def get_id(value):
    return value.split('/')[-1]

并以这种方式在模板中使用它:

<p>{{ weather|get_id }}</p>