Django 1.6 Admin页面CSS不能与Bluehost一起使用

时间:2014-02-16 07:40:14

标签: python apache .htaccess bluehost django-1.6

我正在尝试将我的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,所以请尽可能详细,我几乎一无所知。

1 个答案:

答案 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'。