Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/25: Рейтинг темы: голосов - 25, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267

Изменение поля ImageField

16.08.2019, 15:52. Показов 5280. Ответов 18

Студворк — интернет-сервис помощи студентам
есть ячкейка в базе данных куда я через Django administration могу внести картинку а за тем ее вывести через {{ request.user.image }} на страницу.
как сделать так что бы авторизованный пользователь мог сам ее поменять не заходя в Django administration.
Python
1
2
3
4
5
6
7
8
9
class User(AbstractUser):
.
.
.
    image = models.ImageField(null=True, blank=True)
.
.
.
.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2019, 15:52
Ответы с готовыми решениями:

В ImageField не работает Pillow
python 3.8.10 Django 3.0.1, Pillow 9.2.0, pip 21.1.1 models.py: logotype = models.ImageField(upload_to='media',...

'ImageField' object has no attribute 'value_from_datadict'
я новичок в django, поэтому просто попытался создать и отправить форму. forms.py: from .models import publication from...

Объясните пожалуста ImageField
Читал документацию, там написано, что нужно что-то куда-то прописать для работы. Что нужно прописать понятно, а куда и как не понятно....

18
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
16.08.2019, 17:09
Lastik228, ну собственно как обычно, через форму. Или я что-то не догоняю?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
19.08.2019, 07:28  [ТС]
Цитата Сообщение от kratorr Посмотреть сообщение
ну собственно как обычно, через форму
ну это я понял ноне могу найти при мера или инфы как это сделать
0
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
19.08.2019, 07:45
Python
1
2
3
my_model = ModelWithPohto.objects.get(pk=1)
my_model.image = request.FILES['image']
my_model.save()
Добавлено через 21 секунду
Lastik228,

Добавлено через 15 минут
Модель можно взять из запроса, user_model = request.user
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
20.08.2019, 14:11  [ТС]
kratorr,
что я не так делаю?
views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from landing.forms import LoginForm, RegistationForm, Imageform
.
.
.
.
def personal_area(request):
    forms = Imageform
    forms = forms(request.POST or None)
    if request.method == 'POST':
        if forms.is_valid():
            myimage = request.POST.get(pk=1)
            myimage.image = request.FILES['image']
            myimage.save()
.
.
.
.
.
    contect = {
        'categories': categories,
        'form': form,
        'forms':forms,
        'text': text
    }
 
    return render(request, 'personal_area.html', contect)
forms.py

Python
1
2
3
4
5
6
7
8
9
class Imageform(forms.ModelForm):
    class Meta:
        model = User
        fields = [
            'image'
        ]
    def __init__(self, *args, **kwargs):
        super(Imageform, self).__init__(*args, **kwargs)
        self.fields['image'].required = True
personal_area.html
HTML5
1
2
3
4
5
                                <from method="post">
                            {% csrf_token %}
                            {{ forms}}<h1></h1>
                                <input  type="submit" class='btn btn-success' value="Смена картинки">
                                </from>
0
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
20.08.2019, 15:32
Lastik228, myimage = request.POST.get(pk=1) , что это ? 7,8 строчки тоже не особо понятно. Вы раньше работали с формами?

Вот пример из офф.доки Django

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.http import HttpResponseRedirect
from django.shortcuts import render
 
from .forms import NameForm
 
def get_name(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            # process the data in form.cleaned_data as required
            # ...
            # redirect to a new URL:
            return HttpResponseRedirect('/thanks/')
 
    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()
 
    return render(request, 'name.html', {'form': form})
Вам надо его немного доработать, подставить свою форму и вытащить файл из request
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
21.08.2019, 15:41  [ТС]
kratorr,
почитал документацию и облазил форумы. сделал смену пароля а вот картинку он на сервер не хочет отправлять и заносить данные в базу.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def personal_area(request):
 
    categories = Category.objects.all()
    text = Text.objects.all()
    print(2.1)
# картинка
    forms = Imageform(request.POST or None)
    if forms.is_valid():
        employee = Imageform.objects.get(pk=1)
        employee.user=request.FILES['image']
        employee.save()
# пароль
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
 
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Important!
            messages.success(request, 'Your password was successfully updated!')
        else:
            messages.error(request, 'Please correct the error below.')
    else:
        form = PasswordChangeForm(request.user)
 
    contect = {
        'categories': categories,
        'form': form,
        'forms': forms,
        'text': text
    }
 
    return render(request, 'personal_area.html', contect)

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
пароль
<form method="post" ><h3 ><div class="colortext">
{% csrf_token %}
{{ form }}<h1></h1>
    </div><input  type="submit" class='btn btn-success'value="Сменить пароль"></h3>
</form>
 
картинка
                                <form action="." method="post" enctype="multipart/form-data" >
 
                                {% csrf_token %}
                                    {{ forms }}
                                    <input type="submit" value="Save Changes" class='btn btn-success' name="save" />
 
                                </form>
0
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
21.08.2019, 15:45
Lastik228, а кто файл из requests будет обрабатывать ? form = Form(request.POST or None, request.FILESl)
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
21.08.2019, 15:53
Python
1
2
3
4
5
6
7
8
9
if request.method == 'POST':
    forms = Imageform(request.POST, request.FILES)
    
    ....
    if forms.is_valid():
        image = forms.cleaned_data.get('image')
        ....
else:
    forms = Imageform()
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
22.08.2019, 07:19  [ТС]
m0nte-cr1st0,
Python
1
2
3
4
5
6
7
8
if request.method == 'POST':
        forms = Imageform(request.POST or None, request.FILES)
        if forms.is_valid():
            image = forms.cleaned_data.get('image')
            image.user=request.FILES['image']
            image.save()
    else:
        forms = Imageform()
при нажатии на кнопку загрузить он выдает ошибку 'InMemoryUploadedFile' object has no attribute 'save' и ругается на линию image.save()
0
102 / 75 / 38
Регистрация: 08.11.2017
Сообщений: 272
22.08.2019, 07:39
Lastik228, image.user=request.FILES['image'] что это такое? откуда user ?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
22.08.2019, 13:06  [ТС]
Цитата Сообщение от kratorr Посмотреть сообщение
image.user=request.FILES['image'] что это такое? откуда user ?
извиняюсь. забыл убрать данную строчку из кода. но даже без нее вылезает ошибка 'InMemoryUploadedFile' object has no attribute 'save'.
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
23.08.2019, 08:44
Lastik228, может, доку уже откроете?
Python
1
2
user.image = image
user.save()
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
27.08.2019, 14:33  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
user.image = image
user.save()
можно ссылку на данную доку
я только это нашел https://djbook.ru/rel1.9/topics/forms/
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
27.08.2019, 14:56
Лучший ответ Сообщение было отмечено Lastik228 как решение

Решение

Lastik228, https://docs.djangoproject.com/en/2.2/
1
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.08.2019, 08:40  [ТС]
Цитата Сообщение от m0nte-cr1st0 Посмотреть сообщение
https://docs.djangoproject.com/en/2.2/
спасибо. картинка загружается но вот только почему то дублируется
а именно загружаю картинку 10.png а в месте с ней еще создается 10_F3pdRm2.png.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def personal_area(request):
 
    categories = Category.objects.all()
    text = Text.objects.all()
    user = get_object_or_404(User, username=request.user)
    if request.method == 'POST':
        forms = Imageform(request.POST, request.FILES)
        if forms.is_valid():
            user.image = forms.cleaned_data['image']
            user.save()
    else:
        forms = Imageform(request.POST, request.FILES)
 
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
 
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Important!
            messages.success(request, 'Your password was successfully updated!')
        else:
            messages.error(request, 'Please correct the error below.')
    else:
        form = PasswordChangeForm(request.user)
 
    contect = {
        'categories': categories,
        'form': form,
        'forms': forms,
        'text': text
    }
 
    return render(request, 'personal_area.html', contect)
Добавлено через 21 минуту
m0nte-cr1st0, извиняюсь оказывается он не дублирует фото при загрузке а при обновлении страницы создает копию и записывает ее как используемую в базу
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
28.08.2019, 08:56
Lastik228, вопрос закрыт?
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
28.08.2019, 08:57  [ТС]
m0nte-cr1st0, да.
0
1 / 1 / 1
Регистрация: 20.04.2017
Сообщений: 267
05.09.2019, 14:49  [ТС]
ребят я вижу много просмотров по данному запросу. вот код
Python
1
2
3
4
5
6
7
8
9
user = get_object_or_404(User, username=request.user)
    if request.method == 'POST':
        forms = Imageform(request.POST, request.FILES)
        if forms.is_valid():
            user.image = forms.cleaned_data['image']
            user.save()
            return render(request, 'index.html', )
    else:
        forms = Imageform(request.POST, request.FILES)
тут так же есть смена пароля и смена почты(без проверки на уникальность)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def personal_area(request):
    categories = Category.objects.all()
    text = Text.objects.all()
    user = get_object_or_404(User, username=request.user)
    if request.method == 'POST':
        forms = Imageform(request.POST, request.FILES)
        if forms.is_valid():
            user.image = forms.cleaned_data['image']
            user.save()
            return render(request, 'index.html', )
    else:
        forms = Imageform(request.POST, request.FILES)
 
    if request.method == 'POST':
        forma = Emailform(request.POST, request.FILES)
        if forma.is_valid():
            user.email = forma.cleaned_data['email']
            user.save()
            return render(request, 'index.html', )
    else:
        forma = Emailform(request.POST, request.FILES)
 
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
 
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Important!
            messages.success(request, 'Your password was successfully updated!')
        else:
            messages.error(request, 'Please correct the error below.')
    else:
        form = PasswordChangeForm(request.user)
 
    contect = {
        'categories': categories,
        'form': form,
        'forms': forms,
        'forma' : forma,
        'text': text,
    }
 
    return render(request, 'personal_area.html', contect)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2019, 14:49
Помогаю со студенческими работами здесь

Ошибка при добавлении ImageField в модель
Доброй ночи, комрады. Столкнулся с такой вот странной проблемой: как только добавляю ImageField в любую из моделей, при попытке...

Изменение ссылки на изображение из ImageField
По умолчанию Django выводит field изображения как ссылку, текст является копией названия изображения. Как можно поменять отображаемый...

Динамическое изменение маски ввода поля по значению из поля со списком
Есть две таблицы. В Т1 есть поле со списком &quot;Гражданство&quot;, значения берутся из Т2. Т2 имеет три поля: &quot;Страна&quot;,...

Моментальное изменение содержимого поля, после изменения другого поля
Всем привет. Есть страничка на JSF(Java), где находится несколько полей, в которых указывается время в миллисекундах. Нужно рядом с каждым...

Изменение значения PictureBox's через цикл. Изменение поля
Здрасте, хотелось бы узнать есть ли возможность через цикл пройтись всем PictureBox (большое число). Card1.BackgroundImage =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru