我正在使用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/'
urls.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未找到...我做错了什么?我确实在我的项目中创建了静态文件夹,紧邻媒体
答案 0 :(得分:1)
我建议删除显式媒体和静态视图,并允许staticfiles应用程序创建它们(当开发时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
答案 1 :(得分:1)
您的静态文件夹应位于您使用它的一个应用程序下。
例如,我有一个名为my_project
的项目和一个名为my_app
的应用程序,我在my_app
中使用了一些静态文件,因此我将它们放在~/project_path/my_project/my_app/static
注意: my_app
必须在INSTALLED_APPS
。请参阅STATICFILES_FINDERS
documentation。
修改强>
作为最佳实践,您应该在一个应用程序(主要应用程序)中拥有一个全局静态文件夹,例如静态文件夹如何将您的html模板基本资源包含为jquery,bootstrap,您的全局样式。
对于静态文件,仅对一个应用程序(例如应用程序foo
)的要求,这些文件应位于foo/static
文件夹
答案 2 :(得分:0)
以下是我在settings.py中定义媒体网址的方法:
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查看已安装的应用程序并检查那里是否有静态文件夹。