cPanel 上的 Django 返回 404 上传文件



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

当我通过管理员或视图上传文件时,它会响应 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>

目录树

******

我在这里找到解决方案, 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)

不要在此线程中完全应用此解决方案 创建或编辑模型实例时 Django 管理员 404 错误,也不是您建议的错误,但是如果我与他交谈支持团队并要求他们停用以前在 cpanel 中可用的"modsec",他们会问你为什么,你告诉他们由于与 django 不兼容,瞧, 如果您需要再次激活它,请再次与他们联系。

在此之后一切正常

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

从 my_project.wsgi 导入应用程序更改后出现上述错误 对于您的,我仍然收到相同的错误。

最新更新