1

当我使用 MEDIA_URL 或 STATIC_URL 指向 /static/ 当前将 MEDIA_URL 设置为 /static/ 并在 CSS 文件的路径中使用它,例如:

<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}css/css.css" />

它指向/static/css.css,但尝试http://localhost/static/css.css给出 404 错误。

我有设置:

.....
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = '/static/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = 'D:/programming/django_projects/ecomstore/'
.....

在 urls.py 我有指向这样的静态:

url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
     {'document_root':'D:/programming/django_projects/ecomstore/'}

那么问题出在哪里?为什么显示 404,我需要为静态文件创建一些视图吗?还是我的设置或 urls.py 中还有其他问题?任何回应将不胜感激,因为我是 django 的新手。

提前致谢

4

1 回答 1

7

您需要更仔细地重新阅读文档:https ://docs.djangoproject.com/en/dev/howto/static-files/

这里有一些注意事项:

  1. MEDIA_URL并且MEDIA_ROOT用于用户上传(您的模型上FileField的 s 和ImageFields )。它应该是它自己的文件夹;“媒体”很常见。

  2. STATIC_URL并且STATIC_ROOT适用于您的静态资源。它也应该是它自己的文件夹;“静态”很常见。

  3. 实际上不要STATIC_ROOT任何东西放进去。该目录仅用于collectstatic生产中管理命令的输出。

  4. 您的静态资源应该放在应用程序的“静态”文件夹全新的不同目录中(即 notMEDIA_ROOTSTATIC_ROOT)。然后将该目录的路径添加到STATICFILES_DIRS.

  5. 不要在 urls.py 中添加任何内容。在开发中,Django 将自动为您的应用程序“静态”目录或STATICFILES_DIRS. 在生产中,您的网络服务器将负责提供这些文件。

于 2012-03-06T22:20:12.110 回答