2017-12-20 10 views
0

저는 장고를 처음 사용하기 때문에 결국 장고에서 정적 파일을 사용하는 방법을 배웠습니다. {% 정적 파일 이름에 파일 이름을 하드 코딩하는 동안 마침내 파일을로드 할 수있었습니다. jpg %}. 그러나 하드 코드 된 filename.jpg를 동적 파일 이름으로 대체하여 문자열을 만들려고했지만 출력이 나오지 않았습니다.연결된 정적 파일 소스를로드 할 수 없습니다

작동하지 않는 코드 :

<script> 
 
\t image_name = "1.png" \t 
 
\t static_start = "{% static '" 
 
\t static_end = "' %}" 
 
\t image_src = static_start.concat(image_name, static_end) 
 
\t window.alert(image_src) \t 
 
\t var para = document.createElement("img"); 
 
\t {% load static %} 
 
\t para.setAttribute("src", image_src) 
 
\t var element = document.getElementById("div_test"); 
 
\t element.appendChild(para); 
 
</script>

작업 코드 스 니펫 :


 

 
<script>  
 
\t var para = document.createElement("img"); 
 
\t {% load static %} 
 
\t para.setAttribute("src", "{%static '1.png'%}") 
 
\t var element = document.getElementById("div_test"); 
 
\t element.appendChild(para); 
 
</script>

내가하려고하는 것은 API를 통해 어딘가에서 가져 오는 이미지 파일을 가지고 있으며 정적 폴더에 저장하는 것입니다. 그 이미지를 다운로드 한 후 다운로드 한 파일의 파일 이름을 알지 못해 정적 파일을 사용하고 동적으로 파일 이름을 얻으므로 내 웹 페이지에로드하려고합니다.

요점은 문자열 연결이 작동하지 않고 문자열을 직접 전달한다는 것입니다.

도움이 될만한 의견이 있습니다.

추신 : 위의 예제에서 분명히 나는 ​​단순히 표시하고자하는 파일의 이름으로 대체 될 1.png을 사용하고 있습니다. get_static_prefix (I 실제로 원하는 방식)을 사용하여

작동 코드

<script> 
 
    image_name = "1.png" \t  \t 
 
    var para = document.createElement("img"); 
 
    {% load static %} 
 
    para.setAttribute("src", "{% get_static_prefix %}" + image_name) 
 
    var element = document.getElementById("div_test"); 
 
    element.appendChild(para); 
 
</script>

답변

0

나는 당신이 여기에 뭘 하려는지 이해 생각하지만, 나는 그것이 가능하다고 생각하지 않습니다. Django 템플릿은 서버에서 렌더링되고 JavaScript는 클라이언트 측에서 렌더링됩니다. 자바 스크립트로 템플릿 태그를 만들려고하지만 템플릿 태그는 클라이언트 측에서 평가되지 않으며 단지 문자열 일뿐입니다.

+0

그 밖의 무엇 당신은 내가이 경우 어떻게해야 제안합니까? –

0

다른 게시물을 참조한 후에, 내가 잘못하고있는 것을 깨달았습니다. 문자열 연결과 이스케이프 문자가 맞지 않아 장고에 get_static_prefix 옵션이 있다는 것을 알았습니다. 그 문자열은 바보 같은 문자열 연결 대신에 사용해야했습니다. 정확한 질문에 대한 답변을 정확하게 편집했습니다.

참고 : Stackoverflow question, Django tutorial