【问题标题】:how to add multiple images to the django如何将多个图像添加到 django
【发布时间】:2017-03-06 05:03:36
【问题描述】:

我是 django 的新手。我正在尝试将多个图像添加到 django 模板中,例如博客文章。我不知道该怎么做。请帮帮我。

我不知道如何将图像保存在单个图像字段中 以及如何上传多张图片

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    phone_no = models.CharField(max_length=10, null=True)
    shop_name = models.CharField(max_length=244, null=True)
    shop_address = models.CharField(max_length=200,null=True)
    city = models.CharField(max_length=20, null=True)
    country = models.CharField(max_length=20, null=True)
    abn = models.CharField(max_length=11)
    website = models.CharField(max_length=200, blank=True, null=True)
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    updated_at = models.DateTimeField(default=datetime.now, blank=True)
    Emg_no = models.CharField(max_length=10, null=True,blank=True)
    payment_date = models.DateTimeField(default=datetime.now, blank=True)
    area_code = models.CharField(null=True, blank=True, max_length=2)
    landline_number =  models.CharField(null=True, blank=True, max_length=9)
    status = models.ForeignKey(Status, blank=True, null=True)
    user_image = models.ImageField(upload_to='user_image')

    def __str__(self):
        return self.user.first_name

    class Meta:
        db_table = 'registration_userprofile'

【问题讨论】:

    标签: django django-models django-forms django-templates django-views


    【解决方案1】:

    您可以创建另一个 Image 模型并在您的 User 模型中为其赋予外键关系。像这样:

    class Image(models.Model):
        *image related fields*
    
    class User(models.Model):
        *user fields*        
        image = models.Foreignkey(Image)
    

    阅读有关 django 多对多字段和一对一字段的信息。Django Model relationship document.

    【讨论】:

      【解决方案2】:

      假设您希望有几张与一个用户个人资料相关的图片,并让用户一次在您的视图中上传多张图片。在您的 models.py 中添加:

      class Image(models.Model):
         user = models.Foreignkey(UserProfile)
         image = models.ImageField(upload_to='user_images')
      

      在你的模板中你这样做:

      <form action="/pic_upload/{{request.user.id}}/" method="post" enctype="multipart/form-data"> 
          {% csrf_token %} 
          <table>
            <tr>
              <td>Select Pictures: </td><td><input name="files" type="file" size="50" accept="image/*" multiple>  </td>
              <td><button type="submit"> Upload </button> </td>
             </tr>
          </table>
      </form>
      

      (请注意,我上面使用的表结构只是一个示例。)

      然后你需要创建保存图片的视图,所以在你的views.py中添加:

        from django.contrib.auth.decorators import login_required
        from django.shortcuts import redirect
      
      
        @login_required
        def pic_upload(request,user_id):
              user = UserProfile.objects.get(user__id=user_id)
              for afile in request.FILES.getlist('files'):
                  pic = Picture()
                  pic.user= user 
                  pic.image = afile
                  pic.save()
      
              return redirect("path_to_where_you_want_to_go_after_upload")
      

      这只是图片上传的视图 - 您还需要一个显示模板的视图。

      (请注意,这仅在用户登录并激活请求上下文处理器时才有效。如果您不需要登录用户,您可以例如为用户创建一个选择框并添加逻辑。)

      然后你需要把这些东西挂在 urls.py 中:

      url(r'^pic_upload/(?P<user_id>\d+)/$', pic_upload, name='pic_upload'),
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-10
        • 2018-11-12
        相关资源
        最近更新 更多