【问题标题】:Django 1.6 Admin page CSS not working with BluehostDjango 1.6 管理页面 CSS 不适用于 Bluehost
【发布时间】:2014-02-16 07:40:13
【问题描述】:

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

【问题讨论】:

    标签: python apache .htaccess bluehost django-1.6


    【解决方案1】:

    如果您直接从文件中复制和粘贴代码,那么您可能会尝试的第一件事是更正 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 是您的应用在获取静态文件时将引用的 url。使用 bluehost,网络可以访问 '/public_html/' 之后的文件路径中的任何内容。这意味着 '/public_html/' 之后的任何文件夹都可以/必须显示在指向该文件夹中任何文件的 url(在您的域名之后)中。

    在这种情况下,您的 STATIC_ROOT 是 '/home/mySite/public_html/QuizApp/static/' 但是您的 STATIC_URL 是“/static/”,所以看起来您的 url 指向了错误的位置。

    因此,例如,如果您的域名是“coolsite.com”,那么您的静态文件将存储在“www.coolsite.com/QuizApp/static/”中,但您指向的网址只是“ www.coolsite.com/static/'。因此,请尝试将您的 STATIC_URL 更改为“/QuizApp/static/”,然后再次运行“python manage.py collectstatic”。

    【讨论】:

    • 我尝试了所有这些,但它仍然不起作用:/ 我什至直接进入了管理 css 文件并将所有文件路径硬编码到 public_html 中的静态文件夹,你认为它会如果我切换到 django 1.4 会更好吗?
    • 不,django 1.6 更可取,我最近自己在一个 bluehost 帐户中使用它,所以我不建议认输。 :) - 我将在上面添加一个额外的建议来编辑我的答案。
    最近更新 更多