2012-04-12 19 views
17

私はサーバを起動するとメッセージhttp://127.0.0.1:8000/が表示されます。私はコードでURLを取得したい。私はそこにオブジェクトを要求していません。実行中のサーバのURLを取得する方法

+0

どのコードでは、URLを取得したいですか? – okm

+0

とにかくそれがなぜ必要ですか? –

+0

長い時間前に、あなたは答えを見つけましたか? – Gocht

答えて

16
request.build_absolute_uri('/') 

か、正確に開発サーバーがで開始されたIPアドレスを知りたい場合は、あなたは、このためのsys.argvを使用することができ、

import socket 
socket.gethostbyname(socket.gethostname()) 
+0

それは私に私のマシンのIPを与える。 127.0.0.1 –

2

を試みることができます。 Djangoの開発サーバは、開発サーバーを再起動するために内部的に同じトリックを使用して同じ引数で

スタート開発サーバー:

manage.py runserver 127.0.0.1:8000 

は、コードでアドレスを取得します:

if settings.DEBUG: 
    import sys 
    print sys.argv[-1] 

これは127.0.0.1:8000

を印刷します
+0

いいえ、私はこれが可能であるべきだと思って、再起動コマンドを見つけることができませんでした:-) –

+0

自動ロード機構はdjango.utils.autoreloadにあります。 restart_with_reloaderメソッドでは、引数を 'sys.argv'から取ります。 – Wesley

8

Djangoのドキュメントhereで、あなたは使用できます:

domain = request.get_host() 
# domain = 'localhost:8000' 
0
import socket 
host = socket.gethostname() 
0
import re 
import subprocess 


def get_ip_machine(): 
    process = subprocess.Popen(['ifconfig'], stdout=subprocess.PIPE) 

    ip_regex = re.compile('(((1?[0-9]{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((1?[0-9]{1,2})|(2[0-4]\d)|(25[0-5]))') 

    return ip_regex.search(process.stdout.read(), re.MULTILINE).group() 
関連する問題