Django更改默认的runserver端口

我想在一个无关的config.ini中指定manage.py runserver监听的默认端口。有没有比在manage.py中解析sys.argv并插入配置的端口更简单的修复方法?

目标是运行./manage.py runserver,而不必每次都指定地址和端口,而是让它从config.ini中获取参数。

298126 次浏览

用下面的代码创建一个bash脚本:

#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>

将其保存为与manage.py相同目录下的runserver

chmod +x runserver

然后运行它

./runserver

这是一个旧的帖子,但是对于那些感兴趣的人:

如果你想改变默认端口号,那么当你运行"runserver"命令时,你可以这样做:

  1. 找到你的python安装。(你可以安装多个python,你也可以有你的虚拟环境版本,所以确保你找到了正确的版本)
  2. 在python文件夹中找到site-packages文件夹。在里面你会找到django的安装
  3. 打开django文件夹-> core -> management ->命令
  4. 在命令文件夹中,使用文本编辑器打开runserver.py脚本
  5. 找到DEFAULT_PORT字段。缺省值为8000。把它改成你喜欢的任何东西 李DEFAULT_PORT = "8080" < / >
  6. 重新启动您的服务器:python manage.py runserver,并查看它使用您设置的端口号

它适用于python 2.7,但也适用于较新版本的python。祝你好运

我们创建了一个新的“runserver”管理命令,它是标准命令的精简包装,但改变了默认端口。粗略地说,你创建management/commands/runserver.py并放入如下内容:

# Override the value of the constant coded into django...
import django.core.management.commands.runserver as runserver
runserver.DEFAULT_PORT="8001"


# ...print out a warning...
# (This gets output twice because runserver fires up two threads (one for autoreload).
#  We're living with it for now :-)
import os
dir_path = os.path.splitext(os.path.relpath(__file__))[0]
python_path = dir_path.replace(os.sep, ".")
print "Using %s with default port %s" % (python_path, runserver.DEFAULT_PORT)


# ...and then just import its standard Command class.
# Then manage.py runserver behaves normally in all other regards.
from django.core.management.commands.runserver import Command

我在这里很晚了,但如果你使用像PyCharm这样的IDE,在“运行”菜单下的“编辑配置”中有一个选项(运行>编辑配置),在那里你可以指定一个默认端口。当然,这只适用于通过PyCharm进行调试/测试。

我也在为同样的问题而挣扎,但我找到了一个解决方案。我想这对你有帮助。 当你运行python manage.py runserver时,它将127.0.0.1作为默认ip地址,8000作为默认端口号,可以在你的python环境中配置。 在python设置中,转到<your python env>\Lib\site-packages\django\core\management\commands\runserver.py并设置 1. default_port = '<your_port>' < br > 2. 在def句柄下找到这个,并设置
如果没有options.get('addrport'): 自我。地址= '0.0.0.0' 自我。Port = self.default_port

现在如果你运行"python manage.py runserver",它将默认运行在"0.0.0.0 "上:

享受编码.....

从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)
  1. 在.bashrc中创建环境变量

    出口RUNSERVER_PORT = 8010 < / p >

  2. < p >创建别名

    alias runserver='django-admin runserver $RUNSERVER_PORT'

我使用zsh和virtualenvs包装。我把出口项目后激活脚本和分配端口为每个项目。

workon someproject
runserver

实际上,在Django服务器开发中修改(唯一)端口的最简单方法是:

python manage.py runserver 7000

应该在http://127.0.0.1:7000/上运行开发服务器

创建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

我在这里加载默认的端口表单设置(它反过来读取其他配置文件),但您也可以直接从其他文件读取它。

下面所有的命令都可以在运行django时改变端口:

python manage.py runserver 127.0.0.1:7000


python manage.py runserver 7000


python manage.py runserver 0:7000

如果您希望更改默认配置,请执行以下步骤:

  1. 打开终端类型命令

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
    
  2. Now open runserver.py file in nano editor as superuser

     $ sudo nano runserver.py
    
  3. find the 'default_port' variable then you will see the default port no is '8000'. Now you can change it to whatever you want.

  4. Now exit and save the file using "CTRL + X and Y to save the file"

Note: Replace <2/3>.x with your usable version of python

在Pycharm中,可以简单地将端口添加到参数中

enter image description here

你可以尝试像这样在manage.py中添加一个参数

python manage.py runserver 0.0.0.0:5000

python manage.py runserver <your IP>:<port>

或者像这样通过港口

python manage.py runserver 5000

python manage.py runserver <your port>

首先你为app应用迁移

python manage.py migrate

然后:

python manage.py runserver <your port>

在浏览器运行127.0.0.1后:(你的端口)

对于Django 3。X,修改settings.py中的default_port。是这样的:

from decouple import config
import django.core.management.commands.runserver as runserver


runserver.Command.default_port = config('WebServer_Port', default = "8088")

然后,如果你想指定端口,只需在你的setting.ini中添加一个新行

[settings]
WebServer_Port=8091

如果不是,请删除该参数。

在上一个版本的Django(目前:4.0.3)中,你可以在settings.py文件中添加这些行


from django.core.management.commands.runserver import Command as runserver
runserver.default_port = "8000"

在你的项目manage.py文件中添加

from django.core.management.commands.runserver import Command as runserver

然后在def main()中:

runserver.default_port = "8001"