1

私はDropzone.jsを使って画像をアップロードできるDjangoプロジェクトに取り組んでいます。ユーザー画像はmypp/imagesフォルダの下に保存されます しかし、私はアップロードされた画像のパスを動的に保存したいと思います。 など。 /images//image1.jpg Btw私はユーザ登録&ログインを処理するのにdjango-registraion-reduxパッケージ(v 1.1)を使用しています。 これらは私のコードです:Dropzoneを使ってDjangoに複数の画像をアップロードし、パスを動的に保存する方法は?

models.py

from django.db import models 
from django.contrib.auth.models import User 

get_user_image_folder(instance, filename): 
return "%s/%s" % (instance.user.user.username, filename) 

class Picture(models.Model): 
user = models.ForeignKey(User, null=True) 
image = models.ImageField(upload_to=get_user_image_folder,) 

foms.py

class PictureForm(forms.ModelForm): 
class Meta: 
    model = Picture 
    fields = ('image',) 

views.py

def upload_picture(request): 
if request.method == 'POST': 
    form = PictureForm(request.POST, request.FILES) 

    if form.is_valid(): 
     picture = form.save() 
else: 
    form = PictureForm() 
return render(request, "upload_picture.html", locals()) 

テンプレート今

<body> 
    <form action="{% url 'upload_picture' %}" class="dropzone" id="myDropzone" method='POST' enctype="multipart/form-data"> 
     {% csrf_token %} 

     <div class="fallback"> 
      <input name="file" type="file" multiple /> 
     </div> 
    </form> 

    <script src="{% static 'dropzone/dropzone.js' %}"></script> 
    <script type="text/javascript"> 
     Dropzone.options.myDropzone ={ 
      paramName: "image", // name of input 
      autoProcessQueue : true, 
      parallelUploads: 1, 

      init : function(){ 
       this.on("success", function(file, responseText){ 
        // event launched at the end of uploading images queued 
        console.log(responseText); 
       }); 
      } 
     }; 
    </script> 
</body> 

urls.py

urlpatterns = [url(r'^upload-picture/', 'myapp.views.upload_picture', name='upload_picture'),]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

settings.py

MEDIA_ROOT = 'C:/Users/mhsha/Desktop/board' 
MEDIA_URL = '/media/' 

私はエラーを取得する画像をアップロードしてみてください: /upload-picturのAttributeError e/'Picture'オブジェクトには属性 'user'がありません 提案があれば幸いです! Models.pyで

答えて

1

は:

あなたは持っている:instance.user.user.usernameを。そこに余分な。ユーザーがあります。これは次のようなものです:

def get_user_image_folder(instance, filename): 
return 'images/{0}/{1}'.format(instance.user.username, filename) 

class Picture(models.Model): 
user = models.ForeignKey(User) 
image = models.ImageField(upload_to = get_user_image_folder) 

これは動作するはずです。

+0

OMGのTYそんなにRooz、私は一日のためにその中で立ち往生した= _ =問題が解決されました – malfered

1

使用 画像= models.ImageField(upload_to = "/メディア/")