2012-06-11 2 views
3

장고와 모든 것이 서버에서 실행 중입니다. 자신의 로컬 컴퓨터의 사용자가 응용 프로그램에 액세스 할 때이 로컬 컴퓨터의 IPV4 및 IPV6을 양식에 저장해야합니다. Django에서 IPV6 주소를 얻으려면 어떻게해야합니까?

내가 데이터를 저장하기 위해 사용하고 뷰입니다 :

def t031003form_save(request): 
    form = T031003Form(request.POST or None, request.FILES or None) 
    if request.method == 'POST': 
     if form.is_valid(): 
      form = form.save(False) 
      form.C003LOGB = datetime.date.today() 
      form.C003LOGD = socket.gethostbyname(socket.gethostname()) 
      form.save() 
      form = T031003Form() 
     else: 
      return HttpResponseRedirect('/erro/') 
    return render_to_response('T031003Form_save.html', {'form': form,}, context_instance=RequestContext(request)) 

을하지만이 IPV4를 저장 사용하고 필드 만 IPv4 주소를 따기 경우이보기에 나는 확실하지 않다 Django가 실행중인 곳은 서버입니다. 나는 내가 필요한 로컬 컴퓨터에서 IPV4 주소를 선택하지 않을 것 같아요.

당신이 나에게 줄 수있는 도움에서 미리 많은 감사드립니다.

답변

4

사용자가 귀하의 사이트에 액세스하는 데 사용한 IP 주소 (예 : IPv4 또는)는 IPv6 만 사용할 수 있지만 둘 다 사용할 수는 없습니다. 현재 IP 주소는하지만, 모두 얻을 수있는 오히려 쉬운 방법이 request.META['REMOTE_ADDR']

를 통해 사용할 수 있습니다 :

  • 두 개의 하위 도메인을 생성의 IPv4/6를 통해 연결할 수 v4.yourdomain.tldv6.yourdomain.tld.
  • 실제 페이지에서
  • 는 사용자와 관련된 임의의 토큰을 생성하는 스크립트 태그를 만들 : 사용자가 IPv4를 통해 페이지에 액세스 한 경우

    <script src="//vX.yourdomain.tld/?token=YYY"></script> 
    

    , X=6를 사용, 그렇지 않으면 X=4을.

  • 하위 도메인 중 하나에 액세스 할 때 실행되는 코드에서 토큰으로 식별 된 사용자의 IP를 기록하십시오.
+0

감사합니다. 그게 내가 알아야 할 것이 었어! :) –

0

IPv4를 사용하면 일치하는 IPv6을 검색 할 수 있습니다. IPv4는 IPv6의 서브넷이므로 v6 로의 변환은 매우 간단합니다. 그런 다음 서버에 HTTP 요청을 보냅니다.

관련 문제