Не могу изменить изображения через html-формы, но могу изменить их из панели администратора django
У меня есть форма, где пользователи могут изменить свою фотографию профиля, но по какой-то причине она просто перестала работать, но когда я пытаюсь изменить фотографию профиля из панели администратора, она работает, вот несколько моих кодов.
settings.html
<form method="POST">{% csrf_token %}
<div class="VpWhO text-center" style="height: 80px">
<div>
<h4 style="text-transform: capitalize;">
{{request.user.username}}
</h4>
{{form.profile_pic}}
</div>
</div>
<button type="submit">Save Changes</button>
</form>
views.py для set.html
def settings_view(request):
myinstance = User.objects.filter(username=request.user).first()
form = SettingsForm(instance=myinstance)
if request.method == 'POST':
form = SettingsForm(request.POST, request.FILES, instance=myinstance)
if form.is_valid():
obj = form.save(commit=False)
obj.username = slugify(obj.username)
obj.save()
messages.success(request, 'Profile Saved.')
return redirect('/')
else:
messages.error(request, 'Can\' save changes.')
else:
myinstance = User.objects.filter(username=request.user).first()
form = SettingsForm(instance=myinstance)
class User(AbstractBaseUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
name = models.CharField(max_length=30, null=True, blank=True)
bio = models.TextField(null=True, blank=True)
profile_pic = models.ImageField(default='default_pfp.jpg', upload_to="user_uploaded")
date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now_add=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username', ]
@property
def imageURL(self):
try:
url = self.profile_pic.url
except:
url = 'default_pfp.jpg'
return url
urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
MY URLS HERE
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
settings.py
STATICFILES_DIRS = [
BASE_DIR / 'static'
]
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'static/images'
Вот как я обращаюсь к изображению в HTML-документе.
<div style="width: 50px;">
<img class="image-big" src="{{user.imageURL}}">
</div>
У меня не возникает никаких ошибок, просто не отображается новое изображение, но изображение попадает в папку. Помогите :(