You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Django开发服务器启动时使用的IP地址和端口?

获取Django开发服务器的IP地址与端口号

在Django开发环境中,你可以通过以下几种方式获取开发服务器启动时使用的IP和端口:

方法1:解析命令行参数

直接从启动服务器的命令行参数中提取地址信息,适合在项目脚本中快速获取:

import sys

def get_dev_server_address():
    if 'runserver' not in sys.argv:
        return None, None
    
    runserver_idx = sys.argv.index('runserver')
    addr_arg = sys.argv[runserver_idx + 1] if len(sys.argv) > runserver_idx + 1 else ''
    
    # 处理不同的参数格式
    if ':' in addr_arg:
        ip, port = addr_arg.split(':', 1)
    elif addr_arg.isdigit():
        # 仅指定端口时,Django默认监听0.0.0.0
        ip = '0.0.0.0'
        port = addr_arg
    elif addr_arg:
        # 仅指定IP时,默认使用8000端口
        ip = addr_arg
        port = '8000'
    else:
        # 无额外参数时,默认地址127.0.0.1:8000
        ip = '127.0.0.1'
        port = '8000'
    
    return ip, port

# 使用示例
server_ip, server_port = get_dev_server_address()
if server_ip and server_port:
    print(f"开发服务器可访问地址:http://{server_ip}:{server_port}")

方法2:自定义runserver命令

通过继承Django原生的runserver命令,在启动时记录IP和端口,适合需要在整个项目中共享该信息的场景:

  1. 在你的Django应用下创建management/commands目录(若不存在),并新建custom_runserver.py文件:
from django.core.management.commands.runserver import Command as RunServerCommand
import os

class Command(RunServerCommand):
    def handle(self, *args, **options):
        # 提取配置的IP和端口
        server_ip = options['addr']
        server_port = str(options['port'])
        
        # 将地址存入环境变量,供其他脚本读取
        os.environ['DEV_SERVER_IP'] = server_ip
        os.environ['DEV_SERVER_PORT'] = server_port
        
        # 执行原生runserver的启动逻辑
        super().handle(*args, **options)
  1. 启动服务器时使用自定义命令:
python3 manage.py custom_runserver
# 或指定地址端口
python3 manage.py custom_runserver 192.168.1.1:8005
  1. 在项目的其他脚本/视图中读取环境变量:
import os

# 获取地址,默认值兼容无自定义命令的场景
server_ip = os.getenv('DEV_SERVER_IP', '127.0.0.1')
server_port = os.getenv('DEV_SERVER_PORT', '8000')

注意事项

  • 以上方法仅适用于Django自带的开发服务器(runserver),生产环境使用Gunicorn、uWSGI等服务器时,需要根据对应服务器的配置方式获取监听地址。
  • 若服务器监听0.0.0.0,意味着允许所有网络接口访问,此时实际可访问的IP为服务器的局域网/公网IP,而非0.0.0.0。

内容的提问来源于stack exchange,提问作者Shashi123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 01:35:20