0

我正在尝试将我的 Django 应用程序上传到 Bluehost,由于某种原因,管理页面上没有任何 CSS 工作,我已经在网上浏览了几个小时以寻找解决方案,但我没有找到任何专门为 Bluehost 或 Django 1.6 量身定制的. 这个问题是最接近我需要的东西,但它仍然不起作用。Django 的管理员缺少 css、图像等 - 无法在共享主机上正确设置静态文件我所有的静态文件现在都在 /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 的第一次体验,所以请尽可能详细,我真的一无所知。

4

1 回答 1

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 是您的应用在获取静态文件时将引用的 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_URL 更改为“/QuizApp/static/”,然后再次运行“python manage.py collectstatic”。

于 2014-02-24T03:10:19.027 回答