manage.py runserver
リッスンするデフォルトのポートを無関係に指定できるようにしたいconfig.ini
。sys.argv
内部manage.py
を解析して設定されたポートを挿入するよりも簡単な修正はありますか?
目標は、./manage.py runserver
毎回アドレスとポートを指定せずに実行することですが、から引数を取りますconfig.ini
。
manage.py runserver
リッスンするデフォルトのポートを無関係に指定できるようにしたいconfig.ini
。sys.argv
内部manage.py
を解析して設定されたポートを挿入するよりも簡単な修正はありますか?
目標は、./manage.py runserver
毎回アドレスとポートを指定せずに実行することですが、から引数を取りますconfig.ini
。
回答:
以下を使用してbashスクリプトを作成します。
#!/bin/bash
exec ./manage.py runserver 0.0.0.0:<your_port>
manage.pyと同じディレクトリにrunserverとして保存します
chmod +x runserver
そしてそれを実行します
./runserver
call
。このソリューションが機能する場合は、解決済みとしてマークしてください。
supervisor
にこれを今使い始めました、それはそれを管理することをさらに簡単にします。:-)しかし、専用のrunserver
スクリプトを作成する以外に、おそらくあなたのソリューションが最もクリーンなソリューションです。
実際、開発用Djangoサーバーで(のみ)ポートを変更する最も簡単な方法は次のとおりです。
python manage.py runserver 7000
http://127.0.0.1:7000/で開発サーバーを実行する必要があります
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)
from django.core.management.commands.runserver import Command as runserver; runserver.default_port = "8080
、manage.pyだけです。:あなたはまたしてリスニング・アドレスを変更することができますrunserver.default_addr
次のコマンドはすべて、djangoの実行中にポートを変更することができます。
python manage.py runserver 127.0.0.1:7000
python manage.py runserver 7000
python manage.py runserver 0: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
ここではデフォルトのポートフォーム設定をロードしています(これにより他の構成ファイルが読み込まれます)が、他のファイルから直接読み込むこともできます。
runserver.py
。どこかに登録する必要がありますか?
runserver
コマンドのpythonモジュールを配置する場所の説明から始まります。また、別のアプリがというコマンドを登録している場合もありますrunserver
。コマンドの名前を変更して、コマンドが認識されるかどうかを確認してください。
<app_name>/management/commands/runserver.py
が、Djangoのオリジナルrunserver
を使用しています。名前をに変更するとrun_server.py
、認識されます。runserver
リンク先のページに特別なものはありません。
新しい「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
デフォルトの構成を変更する場合は、次の手順に従います。
端末タイプコマンドを開く
$ /usr/local/lib/python<2/3>.x/dist-packages/django/core/management/commands
今度は、nanoエディターでスーパーユーザーとしてrunserver.pyファイルを開きます
$ sudo nano runserver.py
「default_port」変数を見つけると、デフォルトのポート番号が「8000」であることがわかります。これで、好きなように変更できます。
「CTRL + XおよびYでファイルを保存」を使用して、ファイルを終了して保存します。
注:<2/3> .xを使用可能なバージョンのpythonに置き換えます
これは古い投稿ですが、興味がある人のために:
デフォルトのポート番号を変更して、「runserver」コマンドを実行するときに優先ポートで開始する場合は、次のようにします。
DEFAULT_PORT = "8080"
Python 2.7で動作しますが、Pythonの新しいバージョンでも動作するはずです。幸運を
私は同じ問題に苦労していて、1つの解決策を見つけました。それはあなたを助けることができると思います。を実行するとpython manage.py runserver
、デフォルトのIPアドレスとして127.0.0.1が使用され、デフォルトのポート番号として8000が使用されます。これは、Python環境で構成できます。Python設定で、1に移動し<your python env>\Lib\site-packages\django\core\management\commands\runserver.py
て設定します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」で実行されます。
コーディングを楽しむ.....