当我执行时
django-admin.py startproject site
Run Code Online (Sandbox Code Playgroud)
有用.
但如果我只是复制网站文件夹它不起作用.
为什么?
<VirtualHost *:80>
ServerName django.stanislavfeldman.com
# Django settings
WSGIScriptAlias / /var/www/django/wsgi_handler.py
WSGIDaemonProcess django.stanislavfeldman.com maximum-requests=200 stack-size=524288
ErrorLog /var/www/django/error.log
LogLevel warn
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
wsgi_handler.py:
import os, sys
sys.path.append('/var/www/django')
os.environ['DJANGO_SETTINGS_MODULE'] = 'site.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud) 我在使用django设置wgsi时遇到了问题.我正在关注这个http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/.然而,我仍然真的很困惑在哪里放置.wsgi文件,如果我需要设置sys.path.我已经在web root的外部和内部直接尝试了它,我无法按预期工作.
# /home/ben/public_html/django_test/testproject/apache/django.wsgi:
import os
import sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
Reliveant apache conf:
DocumentRoot "/home/ben/public_html/django_test/testproject/"
WSGIScriptAlias / "/home/ben/public_html/django_test/testproject/apache/django.wsgi"
Run Code Online (Sandbox Code Playgroud)
Apache Logs Error(标准apache 500页):
ImportError: Could not import settings 'testproject.settings' (Is it on sys.path? ...
Run Code Online (Sandbox Code Playgroud)
我可以通过使用这个来让django至少抛出它自己的错误:
import os
import sys
path = '/home/ben/public_html/django_test/testproject'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
这导致了这个django错误页面:
ImportError at /admin/
No module named testproject.urls
Run Code Online (Sandbox Code Playgroud) 因此,在我的Django结构(默认设置)中,我的文件夹结构如下所示:
/mysite
/mysite
__init.py
settings.py
urls.py
wsgi.py
/mymodel
...
/myapp
...
manage.py
Run Code Online (Sandbox Code Playgroud)
因此,要访问设置文件,默认情况下,wsgi.py被设置为mysite / settings.py。但是,Django将mysite名称分配给2个文件夹,一个在另一个文件夹内。因此,它看起来在最高一级,没有找到它,并引发了错误。我在系统路径中使用父mysite的目录尝试了mysite / mysite / settings.py,但这给出了相同的错误。
ImportError: Could not import settings 'mysite.mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.mysite.settings
Run Code Online (Sandbox Code Playgroud)
要获取有关此错误的更多信息,请检查如何停止获取ImportError:将django与wsgi一起使用时,无法导入设置'mofin.settings'吗?
我只是想知道为什么Django会让默认结构变得如此困难,并且重命名是最好的出路吗?看来这可能是草率的,并且容易出错。不知道如果我确实开始重命名,我必须在几个地方更改名称。似乎很危险。