簡體   English   中英

替換 Django 模板中的字符

[英]Replacing a character in Django template

我想改變& and在我的頁面的元描述中。

這是我試過的

{% if '&' in dj.name %}
    {{ dj.name.replace('&', 'and') }}
{% else %}
    {{ dj.name }}
{% endif %}

這不起作用。 它仍然顯示為&

dj.name.replace('&', 'and')不能調用帶參數的方法。需要編寫自定義過濾器。

官方指南在這里:

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

好的,這是我的示例,比如說,在名為“questions”的應用程序中,我想編寫一個過濾器to_and ,它將字符串中的“&”替換為“and”。

在 /project_name/questions/templatetags 中,創建一個空白的__init__.pyto_and.py ,如下所示:

from django import template

register = template.Library()

@register.filter
def to_and(value):
    return value.replace("&","and")

在模板中,使用:

{% load to_and %}

然后你可以享受:

{{ string|to_and }}

注意,目錄名templatetags和文件名to_and.py不能是其他名字。

文檔是這樣說的:

因為 Django 有意限制了模板語言中可用的邏輯處理量,所以不可能將參數傳遞給從模板內訪問的方法調用。 數據應在視圖中計算,然后傳遞到模板進行顯示。

您必須事先編輯dj.name

編輯:看起來 Pythoner 知道更好的方法: 注冊自定義過濾器 給他點贊 ;)

更有用:

from django import template

register = template.Library()


@register.filter
def replace(value, arg):
    """
    Replacing filter
    Use `{{ "aaa"|replace:"a|b" }}`
    """
    if len(arg.split('|')) != 2:
        return value

    what, to = arg.split('|')
    return value.replace(what, to)


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM