【问题标题】:django on cpanel returnt 404 uploading filecpanel上的django返回404上传文件
【发布时间】:2020-06-29 18:14:55
【问题描述】:

我在 cpanel 中将文件上传到我的服务器 (shareserver) 时遇到问题。

当我通过管理员或视图上传文件时,它会响应 404

如果有人有帮助,我将非常感激

设置

DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT  =   os.path.join(BASE_DIR, 'staticfiles')

# STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static/'),)

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media/')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    os.path.join(BASE_DIR, 'media'),
)

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MIDDLEWARE = [
    'whitenoise.middleware.WhiteNoiseMiddleware', ...

网址

...] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT, show_indexes= True
) + static(
    settings.STATIC_URL, document_root=settings.STATIC_ROOT
)

型号

class Product(models.Model):
    name = models.CharField(max_length=50)
    produc_pic = models.ImageField(default = '',null=True, blank=True)

.htaccess

<IfModule Litespeed>

WSGIScriptAlias / /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/ferre/wsgi.py

<Directory /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/ferre>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Alias /media/ /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/media/
Alias /static/ /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/static/

<Directory /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/static>
Require all granted
</Directory>

<Directory /home/ibhfrwld/ferre-bianconeri/ferreteria-bianconeri/media>
Require all granted
</Directory>

</IfModule>

*************** directory tree ****************

【问题讨论】:

标签: django cpanel


【解决方案1】:

我在这里找到解决方案, https://smartlazycoding.com/django-tutorial/deploy-a-django-website-to-a2-hosting 我遇到同样的问题。这是由passenger_wsgy.py引起的。最初我只被使用过

从 mysite.wsgi 导入应用程序

它不起作用,所以我使用下面的代码,它对我来说很好

import os
import sys
# Set up paths and environment variables
sys.path.append(os.getcwd())
os.environ['DJANGO_SETTINGS_MODULE'] = 'project_name.settings'

import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application

SCRIPT_NAME = os.getcwd()

class PassengerPathInfoFix(object):
    def __init__(self, app):
        self.app = app

    def __call__(self, environ, start_response):
        from urllib.parse import unquote
        environ['SCRIPT_NAME'] = SCRIPT_NAME

        request_uri = unquote(environ['REQUEST_URI'])
        script_name = unquote(environ.get('SCRIPT_NAME', ''))
        offset = request_uri.startswith(script_name) and 
        len(environ['SCRIPT_NAME']) or 0
        environ['PATH_INFO'] = request_uri[offset:].split('?', 1)[0]
        return self.app(environ, start_response)

application = get_wsgi_application()
application = PassengerPathInfoFix(application)

【讨论】:

  • 不要在此线程stackoverflow.com/questions/62796728/… 中应用此解决方案,也不是您建议的解决方案,但如果我与他的支持团队交谈并要求他们停用以前在 cpanel 中可用的“modsec”,他们问你为什么,你告诉他们由于与 django 和 voila 不兼容,如果你需要再次激活它,你再联系他们。在此之后一切正常
【解决方案2】:

不要在此线程Django admin 404 error when creating or editing a model instance 或您建议的解决方案中完全应用此解决方案,但如果我与他的支持团队交谈并要求他们停用以前在 cpanel 中可用的“modsec”,他们会问您为什么和您告诉他们由于与 django 和 voila 不兼容,如果您需要再次激活它,请再次联系他们。

此后一切正常

【讨论】:

    【解决方案3】:

    很抱歉,出了点问题。 该问题已被记录以供调查。请稍后再试。

    从 my_project.wsgi 导入应用程序更改后出现上述错误 对你来说,我仍然遇到同样的错误。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 2017-10-18
      • 2020-11-29
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多