0

私はDjangoの初心者です。画像、価格、電子メールIDの説明がユーザーによって入力される単純なアップロードアプリケーションを作成したいと思います。説明テキストと画像と共に電子メール。ただし、テキストは画像とともに表示されません。 See the final image after uploadingユーザーがdjangoテンプレートに書いた画像の説明を表示する方法

以下

が私のコードです:

Models.py

# -*- coding: utf-8 -*- 
from django.db import models 

class Document(models.Model): 

    docfile = models.FileField(upload_to='documents/%Y/%m/%d') 

    description = models.CharField(max_length=255, blank=True) 

    price = models.IntegerField(default=0) 

    emailId = models.CharField(max_length=255, blank=True) 



**forms.py** 

    from django import forms 


class DocumentForm(forms.Form): 

    docfile = forms.FileField(
     label='Select a file', 
    ) 
    description = forms.CharField(max_length=255) 

    price = forms.IntegerField() 

    emailId = forms.CharField(max_length=255) 

**views.py** 

from django.template import RequestContext 

from django.http import HttpResponseRedirect 

from django.core.urlresolvers import reverse 

from django.shortcuts import render 

from django.shortcuts import render_to_response 

from myapp.models import Document 

from myapp.forms import DocumentForm 

def list(request): 

    if request.method == 'POST': 

     form = DocumentForm(request.POST, request.FILES) 

     if form.is_valid(): 

      newdoc = Document(docfile = request.FILES['docfile']) 

      newdoc.save() 


      return HttpResponseRedirect(reverse('list')) 
    else: 
     form = DocumentForm() # A empty, unbound form 


    documents = Document.objects.all() 


    return render(request,'myapp/list.html',{'documents': documents, 'form': form}) 

def index(request): 

    return render_to_response('myapp/index1.html') 

**list.html** 

{% load staticfiles %} 

{% load static %} 

<html> 

    <head> 

    <meta charset="utf-8"> 

    <title>Recent Uploads</title> 

    </head> 
    <body> 

    <form action="{% url "list" %}" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Upload</button> 
</form> 

    <div id="wrapper"> 
     <section> 
     {% if documents %} 
     <ul id="gallery"> 
      {% for document in documents %} 
      <li> 
      <a href="{{ document.docfile.url }}"> 
       <img src="{{ document.docfile.url }}" alt=""></a> 
       <p> 
       <font color="black"> 
        <p>Description : {{ document.description }}</p> 
        <p>Price :{{ document.price }}</p> 
        <p>Contact/Email-ID : {{ document.emailId }}</p> 
      </font> 
      </a> 
      </li> 
      {% endfor %} 
     </ul> 
     {% else %} 
      <p>No documents.</p> 
     {% endif %} 
     </section> 
    </div> 
    </body> 
</html> 
+0

あなたのフォームとコードが完全に正しいです。ドキュメントオブジェクトをチェックインします。 –

答えて

0

フォームは、データベースにデータを保存しません。 forms.Formではなく、forms.ModelFormから継承する必要があります。後者の場合は、独自のカスタム保存メソッドを記述する必要があります。 ModelFormsあなたのためにそれを暗にします。説明とEMAILIDは、データベース内のnullであるものの

forms.py、

class DocumentForm(forms.ModelForm): 
    class Meta: 
     model = Document 
     fields = "__all__" 

views.pyは、

def list(request): 
    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      doc = form.save(commit=False) 
      doc.docfile = request.FILES['docfile'] 
      doc.save() 
      return HttpResponseRedirect(reverse('list')) 
    else: 
     form = DocumentForm() 
    documents = Document.objects.all() 
    return render(request,'myapp/list.html',{'documents': documents, 'form': form}) 
+0

ご協力いただきありがとうございます!私はこれを試しましたが、今回はイメージが表示されていませんが、その罰金以外。 –

+0

私の答えを編集しました。試してみてください! – zaidfazil

関連する問題