Django 更改默认的 runserver 端口
我想让 manage.py runserver
默认监听的端口可以在一个额外的 config.ini
文件中指定。有没有比在 manage.py
里解析 sys.argv
并插入配置的端口更简单的解决办法?
我的目标是运行 ./manage.py runserver
时,不用每次都指定地址和端口,而是直接从 config.ini
文件中获取这些参数。
19 个回答
14
创建一个 django.core.management.commands.runserver.Command
的子类,并重写 default_port
这个成员。把这个文件保存为你自己的管理命令,比如放在 <app-name>/management/commands/runserver.py
这个路径下:
from django.conf import settings
from django.core.management.commands import runserver
class Command(runserver.Command):
default_port = settings.RUNSERVER_PORT
在这里,我是从设置中加载默认端口的(而设置又会读取其他配置文件),不过你也可以直接从其他文件中读取这个端口。
45
以下所有命令都可以在运行Django时更改端口:
python manage.py runserver 127.0.0.1:7000
python manage.py runserver 7000
python manage.py runserver 0:7000
67
从Django 1.9开始,我找到的最简单的解决办法(基于Quentin Stafford-Fraser的方案)是,在manage.py
文件中添加几行代码,这样可以在运行runserver
命令之前,动态地修改默认的端口号:
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")
import django
django.setup()
# Override default port for `runserver` command
from django.core.management.commands.runserver import Command as runserver
runserver.default_port = "8080"
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
217
其实,改变开发环境中Django服务器的端口,最简单的方法就是这样做:
python manage.py runserver 7000
这样就可以在 http://127.0.0.1:7000/ 上运行开发服务器了。
270
创建一个bash脚本,内容如下:
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
把这个脚本保存为runserver,放在和manage.py同一个文件夹里。
chmod +x runserver
然后用下面的方式运行它:
./runserver