iva*_*van 3 python django django-models
我使用Django 1.9.1,Python 3.5.码:
class Image(models.Model):
image = models.ImageField(upload_to = "shop/static/shop")
description = models.CharField(max_length = 200, blank = True)
def __str__(self):
return self.image.url
def image_tag(self):
return u'<img src="/%s" width="300"/>' % self.image.url[5:] #Bad code
image_tag.allow_tags = True
Run Code Online (Sandbox Code Playgroud)
然后创建对象Image Image.image.url=shop/static/shop/filename.我可以通过以下地址获取图像:/static/shop/filename.这个例子很有效
return u'<img src="/%s" width="300"/>' % self.image.url[5:] #Bad code
Run Code Online (Sandbox Code Playgroud)
self.image.url[5:]我认为是糟糕的代码.如果STATIC_URL将被更改,则代码将不起作用.如何更改与其他人合作的代码STATIC_URL.是否存在库处理URL?
STATIC_ROOT而STATIC_URL对于静态文件-这是使用Web应用程序,不被它的用户更改文件,即静态图像(你的网站标识,背景等).如果您使用的是用户上传的文件,图片与否,MEDIA_ROOT以及MEDIA_URL是否使用过的文件.定义时,upload_to它会MEDIA_ROOT在您的设置中连接.所以ie:
MEDIA_ROOT='/var/www/media/'
你定义:
image = models.ImageField(upload_to = "shop/static/shop")
图像将存储为/var/www/media/shop/static/shop/[image_name.jpg].
MEDIA_URL是URL中与MEDIA_ROOT文件系统路径对应的部分.
另外,如果self.image.url[5:]您正在尝试获取相对路径,则根据您的设置,您可能只使用它self.image.path.
谢谢尼基塔!它帮助了我。要settings.py我加了2行:
MEDIA_ROOT = '/home/1234/5/6/django_app/media/'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
除此之外我改变了models.py。前:
class Image(models.Model):
image = models.ImageField(upload_to = 'some_path')
Run Code Online (Sandbox Code Playgroud)
后:
class Image(models.Model):
image = models.ImageField()
Run Code Online (Sandbox Code Playgroud)
即用户上传的图像MEDIA_ROOT自动下载到路径。
为了使这些图像可用提供浏览器,它会在以下更改urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
之后,图像将在http://server.com/media/filename_of_image.
我的目标是在管理控制面板中显示图像。在这些操作之后,models.py 中的代码将如下:
class Image(models.Model):
image = models.ImageField()
description = models.CharField(max_length = 200, blank = True)
def __str__(self):
return self.image.url
def image_tag(self):
return u'<img src="%s" width="300"/>' % self.image.url #Not bad code
image_tag.allow_tags = True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12434 次 |
| 最近记录: |