Django: хочу создать приложение, которое может загружать и отображать изображения - PullRequest
1 голос
/ 15 июля 2011

Я хочу создать приложение django, которое может загружать и отображать изображения. Однако у меня возникли некоторые проблемы, поскольку это не работает должным образом. Что происходит, когда я пытаюсь загрузить изображение из моей формы, оно не отображается в моем списке. Кажется, у меня проблемы с отображением изображений.

Вот что я сделал до сих пор.

РЕДАКТИРОВАТЬ - код обновлен: Я внес некоторые изменения, которые необходимо внести. Теперь есть еще проблема. Вместо того, чтобы распечатывать изображение, моя программа печатает каталог, в котором сохранено изображение.

Так, например, {{comment.photo}} выведет путь C:/Users/AQUIL/Desktop/myproject/images/P1000992.JPG. Но я хочу видеть изображение на экране. Как распечатать изображение на экране?

models.py

class Comment(models.Model):
    name = models.CharField(max_length = 40)
    datetime = models.DateTimeField(default=datetime.now)
    photo = models.ImageField(upload_to='C:/Users/AQUIL/Desktop/myproject/images', blank=True, null=True)
    note = models.TextField()
    def __unicode__(self):
        return unicode(self.name)

Views.py

def home(request):
    comments = None
    try:
        comments = Comment.objects.order_by('-datetime')
    except:
        return HttpResponseNotFound()
    return render_to_response('home.html', {'comments':comments}, context_instance=RequestContext(request)) 


def add_notes(request):
    comments = Comment.objects.all()
    if request.method == 'POST':
        form = CommentForm(request.POST or None, request.FILES)
        if form.is_valid():
            comments.datetime = datetime.now()
            form.save(True)
            return HttpResponseRedirect(reverse(home))
    else:
        form = CommentForm()
    return render_to_response('form.html', {'form':form,'comments':comments}, context_instance = RequestContext(request))

forms.py

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
    exclude =('datetime')

home.html

{% extends "base.html" %}

{% block content %}

<H2>List of Comments</H2>
<div style="overflow:auto;padding: 10px; border:1px solid black; height:150px; width:700px;">

{% for comment in comments %}
    {{comment.photo}}<br/>
    <b>Posted by: {{ comment.name }} Date: {{ comment.datetime.date }} Time: {{comment.datetime.time}}</b><br/>
    <div style="font-size:125%">{{ comment.note }}</div><br/>   
{% endfor %}
</div>
{% endblock %}

Это много информации, но я надеюсь, что это поможет. form.html

{% extends "base.html" %}
{% block content %}

<h3>Add Notes</h3>  
    <form  enctype="multipart/form-data"  action="" method="POST">{% csrf_token %}
        <table>
        {{form.as_table}}<br/>
        </table>
         <input type="submit" value="Save" STYLE="background-color:#E8E8E8; color:#181818 "/>
    </form>
{% endblock %}

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Во-первых, ваша строка URL-адресов должна содержать только символ косой черты "/" вместо "\"

Во-вторых, вы можете использовать локальный путь для параметра upload_to как:

upload_to='upload/'

А затем правильно установите значение MEDIA_ROOT в settings.py, см. документы .

, в вашем случае это будет:

MEDIA_ROOT = 'C:/Users/AQUIL/Desktop/myproject/images/'
0 голосов
/ 15 июля 2011

читать это в документах.

также, мы можем увидеть HTML-код формы? Кстати, если вы будете делать то же самое, что и в документах, вы решите это ... энциклопедия является фундаментальной!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...