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

Python:Django如何通过Python脚本启动应用及配置manage.py一键启动服务

解决方案

方案1:直接在config.py中调用Django内置接口启动,无需生成bat文件

直接调用Django的管理命令执行函数,省去生成和调用批处理文件的中间步骤,代码如下:

import socket
from django.core.management import execute_from_command_line

# 获取本机IP
host_ip = socket.gethostbyname(socket.gethostname())
# 直接执行runserver命令
execute_from_command_line(["manage.py", "runserver", f"{host_ip}:27"])

运行这个config.py文件就能直接启动服务,符合你要的调用即启动的需求,也不会生成多余的临时文件。

方案2:修改manage.py实现双击自动启动指定IP端口服务

你可以直接修改manage.py的逻辑,在没有传入参数时自动补全runserver和对应IP端口,修改后的完整manage.py代码参考如下:

#!/usr/bin/env python
import os
import sys
import socket

def get_host_ip():
    try:
        return socket.gethostbyname(socket.gethostname())
    except:
        # 异常时默认回环地址
        return "127.0.0.1"

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    # 判断是否没有传入额外参数,是的话自动添加runserver命令和IP端口
    if len(sys.argv) == 1:
        host_ip = get_host_ip()
        sys.argv.extend(["runserver", f"{host_ip}:8000"])
    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()

注意把代码里的你的项目名.settings替换成你实际的Django配置文件路径。修改完成后,直接双击manage.py或者执行python manage.py不带任何参数,就会自动获取本机IP并在对应8000端口启动服务,原有带参数运行的逻辑不受影响。

注意:如果你的设备有多张网卡(比如同时连了WiFi和有线网),socket.gethostbyname可能会拿到127.0.0.1或者非你预期的IP,可以根据自己的场景调整IP获取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:45:05