django 출력 html 내용
data = '<h1>hello worldh1>'
<p>{{ data }}p>
Dell의 목적은 다음과 같습니다.
hello world
그러나 결과는 다음과 같습니다.
<h1>hello worldh1>
인터넷에서 오랫동안 검색한 끝에 마침내 해결 방법을 찾았다.
data | safe
{% autoescape off %}
{{ data }}
{% endautoescape %}
off는 html에 대한 전의를 닫는 것을 의미하며, off를 on으로 바꾸면 html전의를 진행하는 것을 의미하며, 기본적으로 html전의를 진행한다.
주의: autoescape는 계승성을 갖추고 있습니다. 부모 템플릿에 정의되면 하위 템플릿에 대응하는 내용 부분에도 이 속성이 존재합니다.
우리는django가 왜 이 문자들을 원래의 html 내용에 따라 출력하지 않고 뜻을 바꾸어야 하는지 의문이 생길 수 있다.예를 들어 사용자 이름을 입력하여 등록해야 합니다. 이 사용자는 사용자 이름을 다음과 같이 입력했습니다.
<script type="text/javascript">alert('hello');script>
만약 그가 입력한 길이가 합법적이고,django도 확실히 어떤 특수한 문자 변환 방법을 제공하지 않았다면, 웹 페이지에 표시될 때마다 매번 창이 뜨지 않았을까, 그러면 매우 안전하지 않았을 것이다.이 문제를 해결하기 위해django는 기본적으로 모든 특수한 문자를 html에 표시할 수 있는 내용으로 변환하고 전의 기능을 포함하지 않습니다!그래서 위에서 내가 출력하고 싶은데 출력이 안 되는 html 내용이 나왔다.