gpt4 book ai didi

django - 将命令参数添加到本地安全 HTTP 服务器的 Django runserver 命令和 handle() 方法设置

转载 作者:行者123 更新时间:2023-12-05 07:30:58 24 4
gpt4 key购买 nike

我会尽可能含糊其词 - 因为这是一个相当宽泛的问题。

我正在我的 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 的 runserver.pyBaseCommand 类扩展的类,我在其中添加了用于指定证书文件等的参数,一个 inner_run() 函数,它将模仿许多 Django runserver 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() 方法是什么,它应该做什么?

问。仅使用 Django 的 runserver.py 中现有的 handle() 方法就足够了吗?

最佳答案

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

关于django - 将命令参数添加到本地安全 HTTP 服务器的 Django runserver 命令和 handle() 方法设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com