我将尽可能保持模糊-因为这是一个广泛的问题。
我正在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)
我现在想知道-我有一个来自Django BaseCommand
的{{1}}类的扩展类,其中添加了用于指定证书文件等的参数,一个runserver.py
函数将通过添加的证书检查,端口配置等来模仿很多Django运行服务器inner_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()
中现有的handle()
方法就足够了吗?
答案 0 :(得分:0)
https://docs.djangoproject.com/en/3.2/howto/custom-management-commands/
您的文件必须在 /DjangoProject/YouApp/management/commands/ 内
# custom_command.py
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('--delta')
parser.add_argument('--alpha')
parser.add_argument('--universe')
def handle(self, *args, **options):
# argument in a dict here :
print(options)
# Do your stuff :)
pass
python manage.py custom_command --universe=42