当通过 uwsgi 访问时,Crispy django 表单导致内部服务器错误

Crispy django forms results in internal server error when accessed via uwsgi

我在 django 中有一个简单的表单,我试图用 crispy forms 显示它。 Django Django-1.11.1,uwsgi 2.0.15,nginx 1.10.3-1,django-crispy-forms 1.6.1.

我已经安装了 django-crispy-forms (sudo pip3 install django-crispy-forms) 并且我已经按照他们的文档进行了设置。

settings.py:

[...]
INSTALLED_APPS = [
[...]
crispy_forms,
]
CRISPY_TEMPLATE_PACK='bootstrap3'

在我的模板中

{% load crispy_forms_tags %}
[...]
<form action="{{ action }}" method="POST">
    {% csrf_token %}
    {% crispy form %}
    <input type="submit" value="Submit">
</form>

形式:

class UploadForm(forms.Form):
    f = forms.FileField(label="File")
    comment = forms.CharField(max_length=255,strip=True,required=False)

现在,一旦我将 crispy_forms 添加到我的 INSTALLED_APPS,Web 应用程序就会显示 Internal Server Error(通过 nginx 和 uwsgi)。

如果我直接通过 python3 manage.py runserver 运行 它,一切似乎都运行良好。

我是否错过了 uwsgi 配置中的一个步骤,或者我还能如何解决这个问题?

编辑: 发生这种情况时所有 uwsgi 日志为:

--- no python application found, check your startup logs for errors ---                                                               
[pid: 22173|app: -1|req: -1/1] 10.0.2.15 () {48 vars in 823 bytes} [Wed May 10 07:35:28 2017] GET / => generated 21 bytes in 0 msecs (
HTTP/1.1 500) 2 headers in 83 bytes (1 switches on core 0)

这是为每个请求记录的。老实说,我不知道 what/where 我的启动日志是什么。

edit2: 我已经按照 official quickstart 进行了设置:

[uwsgi]
chdir           = /<dir>/<django_project>
module          = <django_project>.wsgi
home            = /<dir>/<virtualenv>
master          = true
processes       = 10
socket          = /<dir>/<socket>.sock
vacuum          = true
uid             = 33 # www-data

edit3: 如果没有 crispy_forms,应用程序 运行 可以通过 uWSGI 正常运行。在 INSTALLED_APPS 中有了它,我 运行 正在解决这些问题。 我猜这是 uWSGI 配置的问题。


edit4/SOLVED: 罪魁祸首是 home = /<dir>/<virtualenv>,当我 运行 所有这些时它仍然在 uWSGI 配置文件中在虚拟环境中。删除 home 设置解决了我的问题。

罪魁祸首是 home = /<dir>/<virtualenv>,当我 运行 所有这些都在 virtualenv 中时,它仍然在 uWSGI 配置文件中。

删除 home 设置解决了我的问题。