ABOUT ME

C#, JAVA, Python, 코딩테스트, 일상 등 IT관련 블로그 입니다. 안녕하세요. 새싹개발자 입니다. 힘냅시다 빠샤! 주꾸미 발처럼 이것저것 콕콕 찔러보며 기록하고자 합니다

Today
Yesterday
Total
  • [Python, DJango] template에서 엔터(개행문자, \n)처리
    Python 2024. 5. 12. 00:23
    728x90

    안녕하세요!

    정말 오랜만에 찾아뵙습니다. 약 5개월 만인거같습니다.

    회사를 이직하고나니 적응하느라 한동안 글을 쓸 생각도 못하고 살았네요...

     

    그렇다고 지금은 살만한가? 사실 그것도 아닙니다. 요즘은 야근라이프에 허덕이지만 그래도 행복합니다.

     

    오랜만에 Python관련 글을 남겨보고자 합니다.

    요즘 회사에서 Python과 DJango를 이용한 웹프로젝트가 슬슬 마무리되는데...

    이거때문에 어제 하루종일 골머리를 앓았기에 까먹기전에 기록해 놓고자 합니다.

     

    그렇기에 따로 내용은 없고 글만 주저리...주저리 적습니다.

     

    문제는

    서버단에서 사유가 적힌 데이터를 db에서 끌어오고 json리턴이 아닌 템플릿에 랜더링 후 페이지 자체를 리턴합니다.

    다만 여기서 사유가 개행문자가 포함되면서 오류가 발생했습니다.

    이거를 처리하기위해 다양한 방법을 시도했지만 결국은 두 가지의 과정을 통해 해결했습니다.

     

    해결과정(1): linebreaksbr 추가

    Python 코드내에서 데이터를 바로 랜더링 할때 html에 {{text}}와 같은 방식을 사용하실 겁니다.

    그렇다면 거기에

    {{text}} > {{text | linebreaksbr}

    로 대체합니다.

    그러면 기존의 데이터가

    "data입니다1\ndata입니다2" > " data입니다1<br>data입니다2 "

    로 변경됩니다.

     

    그러나 이제 문제는 웹페이지 상에서 <br>텍스트로 출력되고 있었습니다.

     

    해결과정(2): innerHTML사용

    위의 {{text}}는 js의 함수에 parameter로 들어가는 값이었습니다.

    이제 이부분은 <br>태그로 해결이 됐으나 웹페이지에 <br>태그로 나오는 오류가 있었죠

    여기서는 또 재밌는 부분이 있었습니다.

    <p>태그에 .textContent로 값을 넣어주고 있었다는 점이죠.

    그렇기에 저는 여기서 innerHTML로 바꿔주자 마법같이 해결이 됐습니다.

    .textContent > .innerHTML로 변경

    이렇게 말이죵.

    이렇게 처리하니 <br>태그를 줄 바꿈으로 인식해 해결했습니다.

     

    이렇게 쓰고 예시가 없다보니 글이 조금 이해하기가 어렵네요.

    그러나 핵심부분은 적어놨으니 나중에 보강을 진행해야겠습니다.

    요즘 개인공부를 하면서 다시 조금씩 글을 써보려 하겠지만 쉽지 않네요 ㅠㅠ

     

    낮에는 덥지만 아침 저녁은 제법 쌀쌀한 봄날씨입니다.

    모두 감기 조심하시고 오늘도 좋은하루 보내시길 바랍니다.

     

    감사합니다. 🌱🌱

    댓글

Designed by Tistory.