191

我想manage.py runserver在一个无关的config.ini. 有没有比解析sys.argv内部manage.py并插入配置的端口更简单的解决方法?

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

4

15 回答 15

240

使用以下内容创建一个 bash 脚本:

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

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

chmod +x runserver

并将其运行为

./runserver
于 2014-05-13T19:14:35.553 回答
167

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

python manage.py runserver 7000

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

于 2017-04-24T23:23:44.080 回答
61

从 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)
于 2016-07-12T03:13:35.343 回答
41

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

python manage.py runserver 127.0.0.1:7000

python manage.py runserver 7000

python manage.py runserver 0:7000
于 2018-03-19T10:37:29.210 回答
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

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

于 2017-04-27T10:22:05.670 回答
9

我们创建了一个新的“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
于 2015-07-06T11:40:40.297 回答
8

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

在此处输入图像描述

于 2018-08-08T15:40:28.873 回答
6

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

python manage.py runserver 0.0.0.0:5000 

python manage.py 运行服务器<your IP>:<port>

或者你像这样通过端口

python manage.py runserver 5000

python manage.py 运行服务器<your port>

于 2021-05-07T02:09:29.340 回答
3

首先,您为应用程序应用迁移

python manage.py migrate

然后:

python manage.py runserver <your port>

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

于 2021-08-25T07:45:23.523 回答
2

我在这里聚会很晚,但是如果您使用像 PyCharm 这样的 IDE,则在“运行”菜单(运行>编辑配置)下的“编辑配置”中有一个选项,您可以在其中指定默认端口。这当然只有在您通过 PyCharm 调试/测试时才有意义。

于 2016-04-14T01:02:01.303 回答
2
  1. 在 .bashrc 中创建环境变量

    导出 RUNSERVER_PORT=8010

  2. 创建别名

    别名 runserver='django-admin runserver $RUNSERVER_PORT'

我使用 zsh 和 virtualenvs 包装器。我将导出放入项目后激活脚本并为每个项目分配端口。

workon someproject
runserver
于 2016-08-16T02:09:41.513 回答
1

如果您想更改默认配置,请按照以下步骤操作:

  1. 打开终端类型命令

     $ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
    
  2. 现在以超级用户身份在 nano 编辑器中打开 runserver.py 文件

     $ sudo nano runserver.py
    
  3. 找到“default_port”变量,然后您将看到默认端口号为“8000”。现在您可以将其更改为您想要的任何内容。

  4. 现在退出并使用“CTRL + X 和 Y 保存文件”保存文件

注意:将 <2/3>.x 替换为您可用的 python 版本

于 2018-06-18T16:19:46.427 回答
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

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

于 2022-01-10T07:48:38.397 回答
-2

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

如果您想更改默认端口号,那么当您运行“runserver”命令时,您将从首选端口开始执行以下操作:

  1. 找到你的 python 安装。(您可以安装多个 python,也可以拥有虚拟环境版本,因此请确保找到正确的版本)
  2. 在 python 文件夹中找到 site-packages 文件夹。在里面你会找到你的 django 安装
  3. 打开django文件夹->核心->管理->命令
  4. 在 commands 文件夹中,使用文本编辑器打开 runserver.py 脚本
  5. 找到 DEFAULT_PORT 字段。默认情况下等于 8000。改成你喜欢的 DEFAULT_PORT = "8080"
  6. 重启你的服务器: python manage.py runserver 看看它使用了你设置的端口号

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

于 2014-10-11T16:54:39.673 回答
-2

我正在努力解决同样的问题并找到了一种解决方案。我想它可以帮助你。当您运行时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>'
2. 在 def 句柄下找到它并设置
if not options.get('addrport'): self.addr = '0.0.0.0' self.port = self.default_port

现在,如果您运行“python manage.py runserver”,它将默认在“0.0.0.0:

享受编码......

于 2016-06-29T08:28:40.277 回答