Django의 Html 관련 Filter

3601 단어
Django는 매우 위대한 물건으로, 그것의 앞부분도 매우 쉽게 손에 넣을 수 있으며, 그것의 Template 언어만 파악하면 된다.그중에 아주 중요한 것이 있는데, 필터라고도 한다.본질적으로 말하자면 Filter는 Python 함수로 왼쪽의 것을 입력으로 하고 번호 뒤의 것을 매개 변수로 하여 처리한 후에 오른쪽으로 출력한다. 구체적인 용법은 아래에서 구체적으로 설명한다.물론 우리가 스스로 정의한 Filter를 제외하고 Django에 내장된 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 등 고급 필터도 있으니 기회가 되면 다시 이야기합시다.

좋은 웹페이지 즐겨찾기