2

我正在使用 Django 1.4,由于某种原因,我能够提供媒体文件,但不能提供静态文件......这是我的代码:设置:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

网址.py:

(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
                    (r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT}),

base.html:

<link href="{{ STATIC_URL }}css/bootstrap.css" rel="stylesheet">
<link href="{{ MEDIA_URL }}css/bootstrap-colorpicker.css" rel="stylesheet">

我得到一个 404 http 未找到...我做错了什么?我确实在媒体旁边的项目中创建了静态文件夹

http://mysite.com:8000/static/css/bootstrap.css

4

3 回答 3

1

我建议删除显式媒体和静态视图,并允许静态文件应用程序创建它们(当 DEBUG 为 True 正在开发中时)。

检查您的 settings.py 中是否存在默认查找器 https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS

将您的项目静态目录添加到 STATICFILES_DIRS ( https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS ) 或在每个应用程序下放置应用程序特定的静态文件夹。该应用程序需要在 INSTALLED_APPS 中列出,以便查找器定位静态内容。

不要自己将静态文件放入 STATIC_ROOT。该目录由collectstatic命令管理。请参阅https://docs.djangoproject.com/en/dev/howto/static-files/#deployment

于 2013-05-20T14:29:52.540 回答
1

您的静态文件夹应该在您使用它的一个应用程序下。

例如,我有一个名为的项目my_project和一个名为 的应用程序my_app,我使用了一些静态文件,my_app所以我将它们放在~/project_path/my_project/my_app/static

注意: my_app必须在INSTALLED_APPS. 请参阅STATICFILES_FINDERS 文档

编辑:

作为最佳实践,您应该在一个应用程序(主要应用程序)中有一个全局静态文件夹,例如一个静态文件夹如何包含您的 html 模板基本资源,如 jquery、bootstrap、您的全局样式。

对于静态文件,只有一个应用程序需要,例如 app foo,这些文件应该在foo/static文件夹下

于 2013-05-20T15:48:28.500 回答
0

这是我在 settings.py 中定义媒体 url 的方式:

import os
ABSOLUTE_PATH           = os.path.dirname(__file__)
MEDIA_ROOT              = os.path.join(ABSOLUTE_PATH, '../media')
MEDIA_URL               = '/media/'
STATIC_ROOT             = os.path.join(ABSOLUTE_PATH, '../static')
STATIC_URL              = "/static/"

所以就像你看到的区别是 ../media 和 ../static

mysite 在您安装的应用程序中吗?Django 查看您已安装的应用程序并检查那里是否有静态文件夹。

于 2013-05-20T14:02:26.577 回答