0

我遇到了与这个问题非常相似的问题,但不幸的是,没有一个解决方案似乎对我有用。

基本上我有以下,非常简单的目录:

ulogin
 - models.py
 - tests.py
 - views.py
 - media 
   - screen.css
 - templates
   - utemplate
     - index.html

在我的settings.py我有以下定义:

MEDIA_ROOT = '../compwebsite/ucode/ulogin/media'
MEDIA_URL = '/media/'

index.html我有以下尝试参考screen.css

<html>
<head> 
    <title>
        YAY TITLE
    </title>
    <link rel="stylesheet" href="{{ MEDIA_URL }}screen.css">
<!--and it more...-->

我的urls.py我有以下内容:

from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns('',
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {
    'document_root': settings.MEDIA_ROOT}))

无论我做什么,我都无法获得对screen.css工作的参考。根据网站上的其他问题,我真的不确定如何解决这个问题。非常感谢,如果您需要更多信息,请告诉我!

4

1 回答 1

1

静态文件应放在'static'目录中;这就是 Django 的样子。“媒体”目录用于保存用户上传的文件,当 django 服务器运行时,这些文件会被复制到静态目录。

MEDIA_URL将您的引用更改为STATIC_URL

您根本不必使用 URLConf 来管理静态文件。

至于您的 Django 设置,硬编码绝对路径以防万一它们被更改(即推送到部署服务器时)并不是一个好主意。

一个更好的主意是做这样的事情:

from os import path

PROJECT_ROOT = path.abspath(path.dirname(path.dirname(__file__)))

MEDIA_ROOT = path.join(PROJECT_ROOT, 'media/')

MEDIA_URL = ''

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    path.join(PROJECT_ROOT, 'static/'),
)

这将确保 Django 使用正确的绝对路径,而不管您的项目在系统上的什么位置。

您也可以启用 DefaultStoreFinder,STATICFILES_FINDERS尽管它不是必需的。

于 2013-07-23T19:10:52.457 回答