我想在一个多余的config.ini中指定manage.py runserver侦听的默认端口。有没有比解析sys. exe更简单的解决方案?在manage.py和插入配置端口Argv ?
目标是运行./manage.py runserver,而不必每次都指定地址和端口,而是让它从config.ini中获取参数。
我想在一个多余的config.ini中指定manage.py runserver侦听的默认端口。有没有比解析sys. exe更简单的解决方案?在manage.py和插入配置端口Argv ?
目标是运行./manage.py runserver,而不必每次都指定地址和端口,而是让它从config.ini中获取参数。
当前回答
下面所有的命令都可以在运行django时改变端口:
python manage.py runserver 127.0.0.1:7000
python manage.py runserver 7000
python manage.py runserver 0:7000
其他回答
在上一个版本的Django(目前:4.0.3)中,你可以在settings.py文件中添加这些行
from django.core.management.commands.runserver import Command as runserver
runserver.default_port = "8000"
首先你为app应用迁移
python manage.py migrate
然后:
python manage.py runserver <your port>
在浏览器运行127.0.0.1后:(你的端口)
用下面的代码创建一个bash脚本:
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
将其保存为与manage.py相同目录下的runserver
chmod +x runserver
然后运行它
./runserver
从Django 1.9开始,我找到的最简单的解决方案(基于Quentin stford - 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)
创建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
我在这里加载默认的端口表单设置(它反过来读取其他配置文件),但您也可以直接从其他文件读取它。