2

これは非常に広範な質問であるため、できるだけあいまいにします。

私は Django プロジェクト内で支払いシステムを構築しています - 安全なサーバー接続を介して私のプロジェクトを実行できるのは素晴らしいことです。そして今、ブラウザのアラートなどでサイトのセキュリティをより重視して、より強制的に安全なインターネットに移行していました.これは、Djangoのコア管理コマンドに追加する必要があるものだと思います.

私はアプリケーション内でこの機能を構築し始めました:

management/commands/runsecureserver.py:

import os
import ssl
import sys

from django.core.servers.basehttp import WSGIServer

class SecureHTTPServer(WSGIServer):
    def __init__(self, address, handler_cls, certificate, key):
        super(SecureHTTPServer, self).__init__(address, handler_cls)
        self.socket = ssl.wrap_socket(self.socket, certfile=certificate,
                                      keyfile=key, server_side=True,
                                      ssl_version=ssl.PROTOCOL_TLSv1_2,
                                      cert_reqs=ssl.CERT_NONE)

私は今疑問に思っています-証明書ファイルなどを指定するための引数を追加するBaseCommandDjangoのクラスから拡張された次のクラスがあります.証明書チェック、ポート構成などを追加してDjango runserverの多くを模倣する関数.runserver.pyinner_run()inner_run()

class Command(BaseCommand):
    def add_arguments(self, parser):
        super(Command, self).add_arguments(parser)
        parser.add_argument(**some argument here***)

ただし、実行時:

$ python manage.py runsecureserver

次のエラーが表示されます。

NotImplementedError: subclasses of BaseCommand must provide a handle() method

だから、それは私に方法が必要だと言っていhandle()ます...

Q. このコンテキストでの handle() メソッドとは何ですか? また、何をすべきですか?

Q. handle()Django の既存のメソッドを使用するだけで十分runserver.pyですか?

4

1 に答える 1