1

Я работаю над проектом Django, где пользователи могут загружать изображения с помощью Dropzone.js. Пользовательские изображения будут сохранены в папке mypp/images. Однако я хотел бы сохранить динамический путь загруженных изображений. . /images//image1.jpg Btw Я использую пакет django-registraion-redux (v 1.1) для регистрации моего пользователя & логин. Это мои коды:Как загрузить несколько изображений в Django, используя Dropzone и динамический путь сохранения?

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/' 

Прямо сейчас, когда я пытаюсь загрузить изображение я получаю ошибку: AttributeError at/upload-pictur e/'Picture' объект не имеет атрибута 'user' любое предложение будет оценено!

ответ

1

В models.py:

У вас есть: instance.user.user.username. Там есть дополнительный .user. Это должно быть примерно так:

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 ти так Рооз я застрял в том, что в течение дня = _ = проблема решена в настоящее время – malfered

1

использование изображения = models.ImageField (upload_to = «/ СМИ /»)