2011-07-15 48 views
1

我想創建一個可以上傳和顯示圖像的django應用程序。不過,由於無法正常工作,因此遇到了一些麻煩。當我嘗試從我的表單上傳圖像時,會發生什麼,它不會顯示在我的列表中。所以我似乎有問題顯示我的圖像。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 %} 
+1

OK,所以你必須ENCTYPE = 「的multipart/form-data的」 添加到您的表單標籤,否則將無法上傳你的任何圖像 –

+0

你必須在'settings.py'中配置更多的東西;像「MEDIA_ROOT」或「MEDIA_URL」之類的東西。然後,您必須將圖像目錄放在html'img'標籤內,這可能看起來像:''。請參閱[stackoverflow django圖像問題](http://stackoverflow.com/questions/6777732/want-to-display-an-image/6778220#6778220)瞭解更多Django的細節和[w3schools img標籤](http:// www .w3schools.com/tags/tag_img.asp)以獲取更多HTML細節。 –

回答

0

在文檔閱讀this

另外,我們可以看到表單的html代碼嗎?順便說一句,如果你真的喜歡在文檔中,你會解決它...... enctype是根本!

1

首先,你的URL字符串應該只包含斜線「/」符號代替「\」

其次,你可以使用本地路徑爲您upload_to參數爲:

upload_to='upload/' 

然後設置正確設置settings.py中的MEDIA_ROOT值,請參閱docs

你的情況

,這將是:

MEDIA_ROOT = 'C:/Users/AQUIL/Desktop/myproject/images/' 
+0

是啊,基本上你必須合併我們的答案才能達到你的觀點 –

相關問題