2017-10-31 7 views
0

질문을 표현하는 데 어려움을 겪고 있습니다. 이미 Stackoverflow에 대한 답변이있을 수 있지만 이미지 링크를 제공하는 API로 작업하고 있습니다. JSON 파일의 다른 데이터와 함께 외부 URL 불행히도 일부 링크가 더 이상 작동하지 않습니다.이미지가 외부 URL에서로드되는지 여부를 기반으로하는 문인 경우

제 목표는 if 문에서이를 확인하고 이미지가로드되지 않으면 다른 데이터도로드하지 말아야한다는 것입니다.

는 여기에 내가 시도 코드,하지만 불행히도, 일부 항목은 아직 통해 점점 :

{% for i in range(cards[setName]|length) %} 
    {% if cards[setName][i]['img'] %} 
     <p>{{ cards[setName][i]['name'] }}</p> 
     <a href="{{ cards[setName][i]['img'] }}"> 
      <img src="{{ cards[setName][i]['img'] }}"> 
     </a> 
    {% endif %} 
{% endfor %} 
+0

당신은 이미지가로드되지 않는 경우 데이터를 숨기기 위해 JS를 사용할 수 있습니다. 다음과 같이 : https://stackoverflow.com/q/3235913/1925257 – xyres

+0

@xyres가 가장 좋은 해결책을 가지고있다.'cards [setName] [i] [ 'img']'가 null이 아니기 때문에 코드는 여전히 죽은 이미지를 표시한다. ' – sunny

+0

이 이슈를 다루는 파이썬적인 방법이 있습니까? 차라리이 문제에 대한 jQuery에 대해 조사하지 않을 것입니다. – Bonteq

답변

1

여기에 최소한의 예가 나와 있습니다. 필요에 따라 수정하십시오. 이미지가로드되지 않으면 img의 부모 div가 숨겨집니다. 사업부가 액세스 할 수 IMG의 웅대 한 부모가 아닌 부모 인 경우

<div> <!-- this div contains the image and other data --> 

    <img src="path/to/image.jpg" onError="this.onerror = '';this.parentElement.style.display='none';"> 

    <!-- ... other data ... --> 
</div> 

는 사용

this.parentElement.parentElement 
+0

끝났습니다. 최대 작업. 고맙습니다. – Bonteq

1

신사 링크가 작동되지 않거나이 알고하지 않습니다. 그냥 문자열을 가져옵니다. 따라서 API 나 API에서 JSON을 전송하기 전에이 검사를 수행하거나 주석에서 제안 된 javascript 솔루션을 사용하여 실패한 이미지를 숨길 수 있습니다.

json을 보내기 전에 '확인'을하는 것은 나쁜 생각입니다. 각 URL을 확인하라는 요청을 많이 할 것이기 때문입니다. 비동기 작업을 사용하여 데이터베이스의 이미지를 확인하는 것이 가장 좋습니다.

왜 범위 내에서 i를 사용합니까? 이렇게하면 가독성이 향상됩니다.

{% for card in cards[setName] %} 
    {% if card['img'] %} 
     <p>{{ card['name'] }}</p> 
     <a href="{{ card['img'] }}"> 
      <img src="{{ card['img'] }}"> 
     </a> 
    {% endif %} 
{% endfor %} 
+0

안녕하세요, @xyres의 대답은 내가 물어 본 질문에 대해 일을 끝내지 만 제공되는 URL을 파헤 치며 마지막 몇 문자를 변경하면 '잘못된'URL이 전부는 아니더라도 대부분이 작동합니다. API 호출 중에 변경 될 수 있습니까? 원하는 경우 새 스레드를 만들어 드리겠습니다. – Bonteq

+0

왜 당신은 어떤 종류의 URL을 사용하고 있습니까? '마지막 몇 자'를 변경하는 것은 상당히 광범위합니다. '.png'를 '.jpeg'또는 유사한 확장자 변경으로 변경하는 것을 의미 할 수 있습니다. 또는 .. 'tinyurl'과 같은 URL을 사용할 때, 완전히 다른 URL입니다. 조금 더 많은 정보가 유용 할 것입니다. –

+0

물론입니다. 예를 들어,이 URL은 http://wow.zamimg.com/images/hearthstone/cards/enus/original/CS2_049_H1.png로 표시되고 있지만 처음 7자를 유지하고 그 사이의 모든 문자를 삭제하면 png, 그림이 제대로 나타납니다. 따라서 위의 URL이 아닌 http://wow.zamimg.com/images/hearthstone/cards/enus/original/CS2_049.png – Bonteq