我是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'
答案 0 :(得分:2)
让我们假设你想要一张与一个Userprofile相关的图片,让用户一次在你的视图中上传多张图片。在您的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'),
答案 1 :(得分:1)
您可以在User模型中创建另一个Image模型并为其指定Foreignkey Relationship。如下所示:
class Image(models.Model):
*image related fields*
class User(models.Model):
*user fields*
image = models.Foreignkey(Image)
请阅读有关django多对多字段和一对一字段的信息。Django Model relationship document.