在模板中使用图像django [英] Using image in a template django

查看:118
本文介绍了在模板中使用图像django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在模板中查看图像,但我不明白我做错了什么。





models.py

  class Item(models.Model):
name = models.CharField(verbose_name =Название,max_length = 100)
TYPE_ITEMS =(
(shirt,Футболка),
(shoes,Обувь ),
(bags,Рюкзакиисумки),
(头,Головныеуборы),
(其他,Другое),

type_item = models.CharField(verbose_name =Типпродукта,
choices = TYPE_ITEMS,max_length = 6,
default =shirt)
other = models.CharField (другаяинформация,max_length = 200)
color = models.CharField(Цвет(а),max_length = 100)
cost = models.IntegerField(Стоимостьзаштуку,default = 0 )
is_available_now = models.BooleanField(Естьливналичии?,
default = False)
available_count = models.IntegerField(Количествовналичии,default = 0)
photo = models.ImageField(Фото,upload_to =照片/ to_trade)

def __str __(self):
return self.name ++ self.color +( + str(self.cost)+грн)

views.py

$从django.shortcuts导入render
从django.http导入httpResponse
从django.template导入RequestContext,loader ### b
$ b


from myapp.models import Item

def index(request):
return render(request,index.html)

def商品(请求):
shirts_list = Item.objects.filter(type_item =shirt)

template = loader.get_template(goods.html)
context = RequestContext请求,{
shirts_list:s
return HttpResponse(template.render(context))

def contacts(request):
return render(request,contacts.html)

def delivery(request):
return render(request,delivery.html)

urls.py

  from django.conf.urls import patterns,include,url 
from django .contrib import admin

from myapp import views

urlpatterns = patterns('',
#示例:
#url(r'^ $' ,'paporotnik.views.home',name ='home'),
#url(r'^ blog /',include('blog.urls')),

url r'^ admin /',include(admin.site.urls)),
url(r'^ $',views.index,name =index),
url(r'^ goods ',views.goods,name =goods),
url(r'^ contacts',views.contacts,name =contacts),
url(r'^ delivery',views。 delivery,name =delivery),
url(r'^照片/ to_trade /(?P< path>。*)$','django.vi ews.static.serve'),

settings.py

  import os 
BASE_DIR = os.path.dirname(os.path.dirname(__ file__))

SECRET_KEY ='(= bk @ zukikdq == 0dtokjbg-sbgge5zi(^ te01 + 9 = w%is-76sxv'
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

TEMPLATE_DIRS = [os.path.join(BASE_DIR,templates)]

INSTALLED_APPS =(
'django.contrib.admin ',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages'
'django.contrib.staticfiles',
'myapp',


MIDDLEWARE_CLASSES =(
'django.contrib.sessions.middleware.SessionMiddleware ',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',


ROOT_URLCONF ='paporotnik.urls'

WSGI_APPLICATION ='paporotnik.wsgi.application'

DATABASES = {
'default':{
'ENGINE':'django.db.backends.sqlite3',
'NAME':os.path.join(BASE_DIR,'db.sqlite3'),
}
}

LANGUAGE_CODE ='en-us'

TIME_ZONE ='UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
STATIC_URL ='/ static /'
STATIC_ROOT =C:\\Python33\\\\Scripts\\\\\\\\static

这是我的模板:

  {%load staticfiles%} 

<!DOCTYPE HTML>
< html>
< head>
< meta charset =utf-8>
< title>Товары - Paporotnik.ua< / title>
< link rel =stylesheet,type =text / css,href ={%static'myapp / style_index.css'%}>
< / head>
< body>
< div id =container>
<! - Верхняяпанель(заголовок) - >
< div id =header>
< div style =float:left; width:100%>
< div style =margin:0 10%;>
< br>< h1 id =heed> Paporotnik.ua< / h1>< br>
< / div>
< / div>
< div id =divLogo>
< img id =logo,width =125,height =125>
< / div>
< div id =垃圾align =center>
< h3>Корзина< / h3>
< img align =center,width =70,height =50>
< / div>
< / div>
<! - Центр,основноесодержимое - >
< div id =wrapper>
< div id =content>
< p align =center>
< h2 align =center>Футболки< / h2>
< div align =center>
{%for shirts_list%}
< img src ={{item.photo}},width =150,height =250>
{%endfor%}
< / div>
< / div>
< / div>
< / div>
< / body>
< / html>

当我在浏览器中查看代码时,路径是正确的:





但是当我点击网址时,我看到这样:





它告诉我,我的照片不存在,但它在那里!



解决方案

我想提醒你的一些事情。 static 存储您的css,js和网站前端所需的图像。 media 存储用户上传的所有图像。因此,在您的设置中,

  MEDIA_URL ='media /'
pre>

然后,在您的模板中,在前添加 / {{MEDIA_URL}} {{item.photo}}



在你的urls.py文件中,到urlpatterns追加:

  + static(settings.STATIC_URL,document_root = settings.STATIC_ROOT)+ static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)

这应该排序问题。


I want to view images, in a template, but I don't understand what I'm doing wrong.

models.py

class Item(models.Model):
    name = models.CharField(verbose_name = "Название", max_length = 100)
    TYPE_ITEMS = (
        ("shirt", "Футболка"),
        ("shoes", "Обувь"),
        ("bags", "Рюкзаки и сумки"),
        ("heads", "Головные уборы"),
        ("others", "Другое"),
        )
    type_item = models.CharField(verbose_name = "Тип продукта",
                                 choices = TYPE_ITEMS, max_length = 6,
                                 default = "shirt")
    other = models.CharField("другая информация", max_length = 200)
    color = models.CharField("Цвет(а)", max_length = 100)
    cost = models.IntegerField("Стоимость за штуку", default = 0)
    is_available_now = models.BooleanField("Есть ли в наличии?",
                                           default = False)
    available_count = models.IntegerField("Количество в наличии", default = 0)
    photo = models.ImageField("Фото", upload_to = "photos/to_trade")

    def __str__(self):
        return self.name + " " + self.color + " (" + str(self.cost) + " грн)"

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext, loader ####
from myapp.models import Item

def index(request):
    return render(request, "index.html")

def goods(request):
    shirts_list = Item.objects.filter(type_item = "shirt")

    template = loader.get_template("goods.html")
    context = RequestContext(request, {
        "shirts_list": shirts_list,})
    return HttpResponse(template.render(context))

def contacts(request):
    return render(request, "contacts.html")

def delivery(request):
    return render(request, "delivery.html")

urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin

from myapp import views

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'paporotnik.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.index, name = "index"),
    url(r'^goods', views.goods, name = "goods"),
    url(r'^contacts', views.contacts, name = "contacts"),
    url(r'^delivery', views.delivery, name = "delivery"),
    url(r'^photos/to_trade/(?P<path>.*)$', 'django.views.static.serve'),
)

settings.py

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

SECRET_KEY = '(=bk@zukikdq==0dtokjbg-sbgge5zi(^te01+9=w%is-76sxv'
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

TEMPLATE_DIRS = [os.path.join(BASE_DIR, "templates")]

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'paporotnik.urls'

WSGI_APPLICATION = 'paporotnik.wsgi.application'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
STATIC_URL = '/static/'
STATIC_ROOT = "C:\\Python33\\Scripts\\paporotnik\\static" 

This is my template:

{% load staticfiles %}

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset = "utf-8">
        <title>Товары - Paporotnik.ua</title>
        <link rel = "stylesheet", type = "text/css", href = "{% static 'myapp/style_index.css' %}">
    </head>
    <body>
        <div id="container">
            <!-- Верхняя панель (заголовок) -->
            <div id="header">
                <div style = "float: left; width:100%">
                    <div style = "margin: 0 10%;">
                        <br><h1 id = "heed">Paporotnik.ua</h1><br>
                    </div>
                </div>
                <div id = "divLogo">
                    <img id = "logo", width = "125", height = "125">
                </div>
                <div id = "trash" align = "center">
                    <h3>Корзина</h3>
                    <img align = "center", width = "70", height = "50">
                </div>
            </div>
            <!-- Центр, основное содержимое -->
            <div id="wrapper">
                <div id="content">
                    <p align = "center">
                    <h2 align = "center">Футболки</h2>
                    <div align = "center">
                        {% for item in shirts_list %}
                            <img src = "{{item.photo}}", width = "150", height = "250">
                        {% endfor %}
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

When I view the code in a browser, the path is correct:

But when I click on the URL, I see this:

It tells me that my picture doesn't exist, but it is there!

解决方案

Something that I would like to bring to your notice. static stores your css,js and images that are needed for the website frontend. media stores all the images uploaded by the user. So, in your settings define,

MEDIA_URL = 'media/'

Then, inside your template append /{{MEDIA_URL}} in front of {{item.photo}}.

And in your urls.py file, to the urlpatterns append:

+static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

This ought to sort the problem.

这篇关于在模板中使用图像django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆