동적으로 생성 된 컨텐츠 블록을 Django 템플릿에 넣을 수있는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1024220

  •  06-07-2019
  •  | 
  •  

문제

Django 템플릿에 Twitter 상태 또는 맛있는 태그와 같은 것들을 포함하고 싶습니다.

이러한 것들은 역동적이지만 규칙적입니다. 이 작업은 어떻게 이루어질까요?

도움이 되었습니까?

해결책

이를 처리하는 방법에는 여러 가지가 있으므로 자신의 개인 스타일이나 요구 사항과 가장 잘 어울리는 메소드를 선택할 수 있습니다.

  1. 템플릿 컨텍스트 변수: Alex가 답한대로 모든 뷰에서 생성 된 모든 템플릿의 맥락에 포함 된 컨텐츠 변수에 컨텐츠를 넣을 수 있습니다. Django는이 작업을 자동으로 수행하는 메커니즘을 제공합니다. 컨텍스트 프로세서. 장점 : 매우 간단합니다. 단점 : 클라이언트 브라우저에서 새로운 컨텐츠를 동적으로 새로 고치지 않습니다.

  2. Ajax 동적 하중: Alex와 Dave가 언급했듯이 Ajax 메소드를 사용하여 콘텐츠를 동적으로로드 할 수 있습니다. jQuery를 사용하는 예로, 당신은 당신의 템플릿에 자리 표시자를 다음과 같은 것과 같은 것입니다. <div id="twitterfeed"></div> 그런 다음 템플릿의 JavaScript 블록에서 $("#twitterfeed").load("{% url twitterfeed %}"); 어디 twitterfeed urls.py에 명명 된 URL입니다. 장점 : 브라우저를 동적으로 업데이트합니다. 단점 : JavaScript를 모르는 경우 까다로울 수 있습니다.

  3. 포함 태그: Django는 포함 태그, 기본적으로 동적 컨텐츠를 렌더링 할 수있는 사용자 정의 템플릿 태그입니다. 컨텐츠를 생성하려는 코드가 모든 뷰를 호출하지 않고 템플릿에서 사용자 정의 템플릿 태그를 사용할 때만 호출되는 것을 제외하고는 컨텍스트 변수와 유사합니다. 또 다른 이점은 내용이 자체 템플릿에서 생성된다는 것입니다. 물론 일반 컨텍스트 변수 로이 작업을 수행 할 수 있지만 포함 태그를 사용하는 것만 큼 깨끗하지는 않습니다 (IMHO). 장점 : 매우 간단하고 깨끗합니다. 단점 : 클라이언트 브라우저에서 새로운 컨텐츠를 동적으로 새로 고치지 않습니다.

다른 팁

가장 간단한 접근법은 사용하는 것입니다 {{ mycontent }} 템플릿에서 (동적으로 생성 된 컨텐츠가 나타나기를 원하는 곳) mycontent 그리고 템플릿을 렌더링하는 데 사용하는 맥락에서의 가치, 즉 Django의 템플릿의 가장 근본적인 부분입니다.

당신이 의미하는 바는 당신이 페이지의 JavaScript가 서버가 주어진 시간에 원하는 것에 따라 그러한 컨텐츠를 지속적으로 새로 고침하는 Ajax 지원을 원한다면, 나는 조사하는 것이 좋습니다. 도장 고, Dojo/Django 통합 프로젝트 - 각 Dojo와 Django가 자체적으로 (아직 버전 0.4가 아님)이지만 아직 완전히 성숙하지는 않지만 이미 사용 가능하고 유용합니다.

일반적인 기술은 생성 된 콘텐츠에 자리 표시 자 DIV를 남겨두고 페이지에 포함 된 JavaScript의 Ajax 호출을 통해 클라이언트 측의 DIV를 채우는 것입니다.

이는 별도의 동적 비트와 함께 캐시 가능 (빠른 로딩) 기본 페이지를 갖는 이점을 제공합니다. 다이나믹 비트를 원하는 라이브에 따라 더 짧은 지속 시간을 위해 캐시 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top