再會,
我正在使用 Django 影像欄位和用戶模型測驗一些東西。關鍵是任何用戶都可以上傳和更新個人資料圖片。但是當我選擇一張圖片并按上傳時,我收到訊息“此欄位是必填項。所以就好像我沒有選擇任何東西一樣。
\\照片.html
<form method="POST">
{% csrf_token %}
{{ form }}
<button type="submit">Upload</button>
</form>
\\views.py
def photo_view(request):
try:
profile = request.user.userimage
except UserImage.DoesNotExist:
profile = UserImage(user=request.user)
if request.method == 'POST':
form = UserImageForm(request.POST, instance=profile)
if form.is_valid():
form.save()
return redirect('/dashboard/user/profile')
else:
form = UserImageForm(instance=profile)
return render(request, 'photo.html', {'form': form})
\模型.py
class UserImage(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL, default=None, null=True, on_delete=models.CASCADE)
photo = models.ImageField(
upload_to='images/', height_field=None, width_field=None, max_length=100)
def __str__(self):
return str(self.user)
\\設定.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
我用這個試了一下 https://www.geeksforgeeks.org/imagefield-django-models/
有人知道解決方案嗎?或者在處理影像時我什至應該使用 ImageField 嗎?
非常感謝你!:-)
uj5u.com熱心網友回復:
這里有兩個問題:如果你上傳檔案,你需要指定enctype="multipart/form-data":
form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button type="submit">Upload</button>
</form>
此外,您需要同時傳遞request.POST和request.FILES到表單:
def photo_view(request):
try:
profile = request.user.userimage
except UserImage.DoesNotExist:
profile = UserImage(user=request.user)
if request.method == 'POST':
form = UserImageForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
form.save()
return redirect('/dashboard/user/profile')
else:
form = UserImageForm(instance=profile)
return render(request, 'photo.html', {'form': form})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420194.html
標籤:
