質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

949閲覧

Django 画像アップロードができずにNoneになる

utasan_1008

総合スコア56

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/30 03:08

編集2021/12/02 00:33

現状

Djangoでファイルをアップロードする手順
こちらを参考にしています。
config/media/imagesというフォルダ構成になっています。

ソースコード

config/settings.py

import os BASE_DIR = Path(__file__).resolve().parent.parent MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/'

config/urls.py

urlpatterns = [  省略 ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

mysite/models.py(画像のDB保存先model)

class User(AbstractBaseUser): account_image = models.ImageField( default="https://cdn2.aprico-media.com/production/imgs/images/000/029/940/original.png?1553946576", upload_to='images/', null=True)

mypage/forms.py(mysiteのmodelを更新用のform)

# 画像アップロード(modelの定義) from mysite.models import User class UploadForm(forms.ModelForm): class Meta: model = User fields = ('account_image',)

mypage/view.py(profile_edit関数)

編集ページに遷移する処理、アップロード用のformを表示 def profile_edit(request): try: context = {} if request.method == "POST": # 画像アップロード form = UploadForm(request.POST, request.FILES,) context["form"] = form except: print("プロフィールデータが取得出来ませでした") return render(request, "mypage/profile_edit.html", context)

profile_edit.html

<!-- mypage:profile_email_saveはviews.pyのprofile_email_save --> <form method="POST" action="{% url 'mypage:profile_email_save' %}" enctype="multipart/form-data"> {% csrf_token %}          <div class="d-flex flex-column px-4 pb-2 pt-2">     <label><strong>プロフィール画像</strong></label> {{ form.as_p }}  </div> <div class="px-4 pt-2 pb-3"> <button name="email_edit" type="submit" class="btn btn-primary" value="{{user.id}}">送信</button> </div> </form>

mypage/view.py(profile_email_save関数)

def profile_email_save(request): # ユーザー情報DB変更処理 if request.method == "POST": profile_id = request.POST["email_edit"] account_image = request.POST.get("account_image") print(account_image, "aaaaaaa") User.objects.filter(id=profile_id).update(account_image=account_image) else: print("ユーザー情報が取得出来ませでした") return redirect("/mypage")

問題点

イメージ説明
ファイルを選択すると画像をmacから選択でき右にファイル名も表示されます。
**{{ form.as_p }}**の中身はこちらです

<label for="id_account_image">Account image:</label> <input accept="image/*" id="id_account_image" name="account_image" type="file">

email_editボタンで送信するとprint(account_image, "aaaaaaa")はNoneが返されます。
ファイル名まで表示できているのでaccount_image値を取得したかったのですが、
どこで処理が間違っているのかわかりません。
コードをたくさん載せてしまいすみません。ご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問