0

我在顶部设置了我的 settings.py 文件,以获取模板和媒体的绝对路径:

import os.path
import django

DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__))
SITE_ROOT = lambda x: os.path.join(os.path.abspath(os.path.dirname(__file__)), x)


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',

MEDIA_ROOT = SITE_ROOT('media'),
MEDIA_URL = '/media/'

TEMPLATE_DIRS = (
    SITE_ROOT('templates'),
)

我的模型看起来像这样:

class Work(models.Model):
    sample = models.ImageField(upload_to='screenshots/%Y/%m/%d/')
    name = models.CharField(max_length=200)
    url = models.URLField(blank=True)

同步和创建模板后,我使用了变量

{{ work.sample }}

调用使用 ImageField 上传的图像。运行服务器后,图像未显示。输出很简单

<img src="screenshots/2012/08/09/1.png">

绝对路径未显示在标记中,因此未正确调用图像。其他信息显示得很好。谁能帮我解决这个问题?我确信这是一个简单的解决方法,我只是想不通。顺便说一句,我正在本地运行它。希望这是足够的信息继续下去。谢谢。

4

2 回答 2

1

您必须MEDIA_URL在字段之前单独输出,以便显示完整的 URL。不要忘记RequestContext在渲染模板时使用 a ,并且适当的上下文处理器已经到位。

于 2012-08-13T03:41:04.423 回答
1

我希望这会帮助你

更改设置.py

MEDIA_ROOT = '/path/to/static/folder/static'

 #Your static file location  
MEDIA_URL = 'http://localhost/static'  # i am asuming you are working on localhost

# 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 = ''

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/

' 将你的 apache 链接到 django 静态文件夹

并使用 <img src="{{ MEDIA_URL }}screenshots/2012/08/09/1.png />

于 2012-08-13T08:11:04.217 回答