2014-10-01 7 views
0

django-countries를 사용하여 CountryField에서 플래그를 가져오고 작동합니다. 그러나 일부 사용자는 프로필에 설정된 국가가 없지만 깃발을 표시해야합니다. 내 아이디어는 IP에서 국가를 얻은 다음 국가 또는 그와 비슷한 모든 것을 얻는 것이 었습니다.Python/Django는 IP에서 국가 플래그를 얻습니다.

불행히도 이것은보기에서 발생하지 않으므로 요청이 없습니다. 템플릿에 IP를 설정 한 다음 백엔드에서 플래그가 발견되지 않으면 (국가가 제공되지 않은 경우) 확인한 다음 템플릿에서 얻은 IP를 사용하여 플래그를 가져올 수 있습니다. 그게 가능한가? 필요한 경우 GeoDjango가 이미 프로젝트에 포함되어 있습니다.

아마도이 작업을 수행하는 완전히 다른 방법이 있지만 장고를 처음 사용하면서도 여전히 배우고 있습니다. 감사.

답변

0

먼저 템플릿이 아닌보기에서 국가를 검색해야합니다. 뷰는 모든 DB 작업과 비즈니스 로직을 수행하기로되어 있으며, 템플리트는 뷰가 가져 오는 최상의 방법으로 표시됩니다. 모든 페이지에 적용하려면 컨텍스트 프로세서 사용을 고려하십시오. 는 IP에서 국가를 얻기에 관한

,이 질문은 설명 : (? 아마도 장고 플래그) Django, Retrieve IP location

+0

감사합니다. 그건 내가 나라 이름을 얻고 첫 번째 부분을 해결할 수도있다. 그래도 깃발을 얻어야 해. 나는 장고 국가가 그것을 위해 몇 가지 도구를 가지고 있는지 (국가 이름에서 단지 CountryFiled가없는 깃발을주기 위해) 시도해 볼 것이다. – dnmh

0

개인적으로는 사용자가 자신의 국가를 설정하지 않는 경우 대체로 일반 플래그를 설정 것이고, 공정하게 사용자가하지 않으면 이유가 있어야합니다. 아니면 단순히 해당 국가 필드를 필수로 만들 수 있습니다.

그리고 기존 IP를 기반으로 해당 국가의 사람이 옳다고 생각하지 않는다고 가정합니다. VPN 또는 프록시 서버를 통해 원격으로 작업하는 경우 ... 아이디어를 얻을 수 있다고 상상해보십시오.

사람들을 IP상의 하위 도메인 (다른 언어) 사이트로 리디렉션하려는 경우에 더 효과적입니다.