Django의 Html 관련 Filter
아마도 전단 코드를 쓴 당신은 아래의 문제 중 하나를 만났고 아직 해결되지 않았을 것이다. 그러면 나는 이 문장이 한 번 읽을 만하다고 생각한다.데이터베이스에서 Html 태그가 있는 문자열을 꺼내고 순수한 텍스트만 표시합니다.2. 데이터베이스에서 Html 탭이 있는 문자열을 꺼내서 장식된 풍부한 텍스트를 보여 주기를 원합니다.3. 첫 페이지에서 문장의 일부분을 캡처하여 표시할 때 첫 페이지가 온통 엉망이 되었다.4. Js에서 데이터베이스에 있는 것을 호출할 때 Js 코드에 문법 오류가 발생할 때가 있다.때로는 ', 때로는', 때로는 ', 때로는', '6.잠깐...먼저 소들이 이런 문제를 처리하는 방법을 말하고 자신의 요구에 부합되는 일련의 필터를 손으로 쓰면 쉽게 풀 수 있다.그러나 우리는 단지 Django가 자체로 가지고 있는 Filter를 사용하고 싶다. 다음은 우리가 사용하는 Filter를 하나씩 소개하고 마지막으로 이런 Filter를 이용하여 상술한 난치병을 해결한다.safe는 Html 태그와 < 등의 특수 기호를 적용합니다. 다음 예는 다음과 같습니다.
# value = '<b>CPT</b>'
# ,CPT , safe <b>CPT</b>
{{ value|safe }}
striptags에서 모든 Html 태그를 취소합니다. 다음 예는 다음과 같습니다.
# value = '<p><b>CPT</b></p>'
# , CPT ; <p><b>CPT</b></p>
{{ value|striptags }}
linebreaks는 이런 제어 기호의 변화를 Html에서 식별할 수 있도록 한다
# value = 'CPT
CPT'
# , <p>CPT<br>CPT</p>, ,
# JS ,
, ?
{{ value|linebreaks }}
truncatechars 이것은 오늘 소개한 네 개의 Filter 중 유일하게 파라미터가 있는 문자열의 한 단락을 캡처하는 데 사용되며, 사용법은 다음과 같다.
# value = 'CPTTTTTTTTTTTT'
# , 'CPT'
{{ value|truncatechars:
3
}}
이 네 가지 도구가 있는 후에 우리는 구체적인 문제를 토론할 것이다. 모두 위에서 열거한 장면의 상세한 상황이다.
Html 라벨을 표시하고 싶지 않은 문장은 굵은 글씨체나 빨간색, 파란색이 있습니다. 장식해야 하지만 데이터베이스에서 꺼낸 것은 긴 문자열일 뿐입니다. 따라서 앞부분에 이 문자를 어떻게 표시하는지 알려드려야 합니다. 이럴 때는safe 필터를 간단하게 사용하면 됩니다.
조판에 영향을 주는 왕왕 문제는 언제 나타날까요?문자열 캡처, 즉truncatechars를 동시에 사용할 때 나타납니다. 예를 들어 첫 페이지에서 일부 글의 앞 100글자만 표시하고 싶습니다. 아마도truncatechars:100 필터로 캡처하면 다음과 같은 방법을 사용할 수 있습니다.
{{ value|truncatechars:
100
|safe }}
그래도 실수할 때가 많아요. 왜요?왜냐하면 아마도 네가 캡처한 100글자에서 Html 문법 자체가 잘못된 것일 것이다. 예를 들어
없다
.그래서 실수는 명백하지만 어떤 사람들은 이렇게 사용한다.
{{ value|safe|truncatechars:
100
}}
캡처하고 싶지만 과장하고 싶지 않은 많은 상황은 위의 문장을 통해 해결할 수 있다. 그러나 어떤 때는 우리가 첫 페이지에 문장의 요약을 표시할 때 이런 문자를 과장하고 싶지 않다. 예를 들어 본문에 빨간색과 녹색의 글자가 있는데 우리가 요약을 표시할 때 순수한 검은색의 글자만 표시하고 싶지 않을 때가 있다. 어떡하지?맞아요. 위의 세이프를 바로striptags로 바꾸면 돼요.
Js에서 호출하지만 상황이 좀 더 징그럽다. 예를 들어 당신이 Js에서 호출하면 당신은 무엇을 고려해야 합니까?맞아요. Js는 줄을 바꾸는 인용부호를 지원하지 않아요. 즉, Js의 인용부호는 한 줄만 지원하고 아래의 문법은 Js에서 틀렸어요.
var
s =
'aaaaa
bbbb'
그러나 우리는 데이터베이스에서 꺼낸 물건이 줄을 바꾸지 않았다는 것을 보장할 수 없다. 아마도 당신은 100개의 문자를 캡처하고 싶을 것이다. 아마도 당신은 이런 html 라벨을 표시하지 않으려고 할 것이다. 그래, 아래의 코드를 봐라.
{{ value|striptags|truncatechars:
100
|linebreaks }}
더 징그러워?너는 사실 빈칸, 큰 번호, 작은 번호 이런 것들이 <이런 형식으로 저장되는 것을 발견할 수 있다. 그래서 위의 문장이 집행된 후에 이런 신기한 것이 있을 수 있다!만약 이 물건들이 첫 페이지에 나타난다면, 그것은 죽을 리듬이다.그래서 아래의 이 문장은 완벽하게 해결되었다. 그래, 나는 네 개의 필터를 쓰지 않으면 죽는 병에 걸렸다.
=
"py"
>
{{ value|striptags|safe|truncatechars:
100
|linebreaks }}
물론 escapejs 등 고급 필터도 있으니 기회가 되면 다시 이야기합시다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.