我是一名 Python 新手,我正在尝试使用 Apache 和 mod_wsgi 在 Windows 上运行 Django hello world 应用程序。上面的错误消息显示为以下代码:
import os
import sys
import site
from django.core.wsgi import get_wsgi_application
from django.conf import settings
from django.urls import path
from django.http import HttpResponse
site.addsitedir("C:/Program files/python312/Lib/site-packages")
sys.path.append('C:/Users/felhasznalo/Desktop/django')
sys.path.append('C:/Users/felhasznalo/Desktop/django/todo')
settings.ROOT_URLCONF=__name__
settings.ALLOWED_HOSTS = ['localhost', '127.0.0.1']
settings.SECRET_KEY = '1234'
def hello(request):
return HttpResponse("Hello World!")
urlpatterns = [
path("", hello)
]
application = get_wsgi_application()
从服务器开始,使用此代码可以正常工作:
def application(environ, start_response):
status = '200 OK'
output = b'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
所以我认为问题出在 Django 配置上。我不知道如何传递像
urlpatterns
这样的配置参数。显然创建全局变量是行不通的。有什么想法吗?
在env var中设置模块不起作用,所以我决定直接加载模块并复制属性,这解决了问题。
from django.conf import settings
from django.core.wsgi import get_wsgi_application
import app.settings as app_settings
for key,value in app_settings.__dict__.items():
setattr(settings, key, value)
application = get_wsgi_application()