django 출력 html 내용

2412 단어 Djanjo웹 보안
최근에 django를 배웠기 때문에 django로 간단한 사이트를 만들었습니다. 연습을 하는데 구체적인 기능은 인터넷에서 데이터를 캡처해서 제 사이트에 올리는 것입니다. 그런데 문제가 하나 생겼습니다. 바로 django는 html 형식의 내용을 출력할 수 없고 문자열로만 출력할 수 있습니다.
data = '<h1>hello worldh1>'
<p>{{ data }}p>

Dell의 목적은 다음과 같습니다.
hello world
그러나 결과는 다음과 같습니다.
<h1>hello worldh1>

인터넷에서 오랫동안 검색한 끝에 마침내 해결 방법을 찾았다.
  • 단일 변수에django 필터를 사용하여 HTML 변환을 하지 않아도 된다는 Django 문자열을 알려줍니다. 방법은 다음과 같습니다.
  • data | safe
  • 템플릿 내용에 대해 autoescape 탭을 사용할 수 있습니다. 예를 들어
  • {% autoescape off %}
        {{ data }}
    {% endautoescape %}

    off는 html에 대한 전의를 닫는 것을 의미하며, off를 on으로 바꾸면 html전의를 진행하는 것을 의미하며, 기본적으로 html전의를 진행한다.
    주의: autoescape는 계승성을 갖추고 있습니다. 부모 템플릿에 정의되면 하위 템플릿에 대응하는 내용 부분에도 이 속성이 존재합니다.
    우리는django가 왜 이 문자들을 원래의 html 내용에 따라 출력하지 않고 뜻을 바꾸어야 하는지 의문이 생길 수 있다.예를 들어 사용자 이름을 입력하여 등록해야 합니다. 이 사용자는 사용자 이름을 다음과 같이 입력했습니다.
    <script type="text/javascript">alert('hello');script>

    만약 그가 입력한 길이가 합법적이고,django도 확실히 어떤 특수한 문자 변환 방법을 제공하지 않았다면, 웹 페이지에 표시될 때마다 매번 창이 뜨지 않았을까, 그러면 매우 안전하지 않았을 것이다.이 문제를 해결하기 위해django는 기본적으로 모든 특수한 문자를 html에 표시할 수 있는 내용으로 변환하고 전의 기능을 포함하지 않습니다!그래서 위에서 내가 출력하고 싶은데 출력이 안 되는 html 내용이 나왔다.

    좋은 웹페이지 즐겨찾기