django更改默认的runserver端口

jon*_*nny 97 python django django-manage.py manage.py

我想使默认端口manage.py runserver侦听一个无关的可指定的端口config.ini.有没有比解析sys.argv内部manage.py和插入配置端口更容易的解决方案?

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

Pab*_*noz 148

使用以下命令创建一个bash脚本:

#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
Run Code Online (Sandbox Code Playgroud)

将它作为runserver保存在与manage.py相同的目录中

chmod +x runserver
Run Code Online (Sandbox Code Playgroud)

并运行它

./runserver
Run Code Online (Sandbox Code Playgroud)


Qba*_*ack 78

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

python manage.py runserver 7000
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案是关于更改端口,而不是更改默认端口。 (4认同)
  • 这应该是正确的答案,接受的答案也意味着IP地址,并出于某种原因执行manage.py,而不是通过python调用它 (2认同)

Bil*_*one 37

从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)
Run Code Online (Sandbox Code Playgroud)

  • 目前(从2.0.3开始)你可以添加:`来自django.core.management.commands.runserver import命令作为runserver; runserver.default_port ="8080"到您的manage.py.您还可以使用以下命令更改侦听地址:`runserver.default_addr` (5认同)

Kri*_*rya 22

运行django时,可以使用以下所有命令更改端口:

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000
Run Code Online (Sandbox Code Playgroud)

  • “目标是运行 ./manage.py runserver 而不必每次都指定地址和端口” (4认同)

per*_*eka 12

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

python manage.py runserver 0.0.0.0:5000 
Run Code Online (Sandbox Code Playgroud)

python 管理.py runserver<your IP>:<port>

或者你像这样通过端口

python manage.py runserver 5000
Run Code Online (Sandbox Code Playgroud)

python 管理.py runserver<your port>


小智 12

在 Django 的最新版本(现在:4.0.3)中,您可以将这些行添加到您的 settings.py 文件中


from django.core.management.commands.runserver import Command as runserver
runserver.default_port = "8000"
Run Code Online (Sandbox Code Playgroud)


Feu*_*mel 10

创建一个子类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
Run Code Online (Sandbox Code Playgroud)

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


cha*_*ggy 8

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

在此处输入图片说明


小智 8

python manage.py runserver <your port>
Run Code Online (Sandbox Code Playgroud)

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


Que*_*ser 7

我们创建了一个新的'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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

from django.core.management.commands.runserver import Command as runserver
Run Code Online (Sandbox Code Playgroud)

然后在 def main() 中:

runserver.default_port = "8001" 
Run Code Online (Sandbox Code Playgroud)