我正在尝试将我的Django应用程序上传到Bluehost,由于某些原因,CSS没有在管理页面上工作,我已经在网上浏览了几个小时寻找解决方案,但我没有找到任何专门针对Bluehost的或Django 1.6。这个问题是我最接近的问题,但它仍然没有用。 Django's admin is missing css, images, etc - unable to properly set up static files on shared host我的所有静态文件现在都在/ public_html / static /中,它适用于那个人,所以我很想知道我做错了什么。
以下是相关代码
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
MEDIA_ROOT = '/home/mySite/Django/WebApp/quiz'
MEDIA_URL = '/media/'
STATIC_ROOT = '/home/mySite/public_html/QuizApp/static/'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
在我编辑settings.py后,我确实运行了collectstatic。我觉得这也很重要。
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'tempaltes')]
和.htaccess文件,因为Bluehost不允许您访问httpd.conf文件
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{REQUEST_URI} !^/static/
RewriteRule ^(.*)$ QuizApp.fcgi/$1 [QSA,L]
如果你们都需要什么,请告诉我。这是我第一次体验Web开发,python和CSS,所以请尽可能详细,我几乎一无所知。
答案 0 :(得分:2)
如果您直接从文件中复制并粘贴代码,那么您可能尝试的第一件事就是更正template_dirs分配中的拼写错误。
你有:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'tempaltes')]
应该是:
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
另外,您可以检查是否准确设置了STATIC_ROOT。
应该是:
STATIC_ROOT = '/home/<user>/public_html/subdirectory/static/'
您的子目录看起来很好(QuizApp),但看起来您的项目网站名称为“mySite”,您的用户名应该是。使用bluehost,您希望static_root为/ home / username /...
更新的答案:
您的STATIC_ROOT是移动和存储静态文件的目录的完整路径(当您运行collectstatic时)。您的STATIC_URL是您的应用在获取静态文件时将引用的网址。使用bluehost,Web上可以访问“/ public_html /”之后的文件路径中的任何内容。这意味着'/ public_html /'之后的任何文件夹都可以/必须显示在指向该文件夹中任何文件的URL(在您的域名之后)。
在这种情况下,您的STATIC_ROOT是'/ home / mySite / public_html / QuizApp / static /' 但你的STATIC_URL是'/ static /',所以看起来你的网址指向错误的地方。
因此,例如,如果您的域名是“coolsite.com”,那么您的静态文件将存储在“www.coolsite.com/QuizApp/static/”中,但您指向的网址只是' www.coolsite.com/static/”。所以尝试将STATIC_URL更改为'/ QuizApp / static /',然后再次运行'python manage.py collectstatic'。