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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

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

Q&A

解決済

1回答

2574閲覧

djangoでfilefieldをつかってファイルを保存したい

tarombone

総合スコア5

Django

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Python

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

0グッド

0クリップ

投稿2020/04/01 20:59

前提・実現したいこと

python/djangoでSNSみたいなwebアプリを開発中です。
CreateView/ModelsForm/Modelsを使ってメディアファイルをアップロードしようとしているのですが、プロジェクトのmediaディレクトリにファイルが保存されません。
どうにか画像等をアップロードできるようにできませんか?

試したこと

admin管理サイトからなら画像/ファイルのアップロードができ、
該当のディレクトリに保存が確認できました。
ということはmodelには問題ないかと思っています。

該当のソースコード

models

python

1from django.db import models 2from accounts.models import CustomUser 3 4# Create your models here. 5from django.urls import reverse 6 7 8class Prof_Type(models.Model): 9 USER_ID = models.ForeignKey(CustomUser, verbose_name='ユーザーID', on_delete=models.PROTECT) 10 USER_NAME = models.CharField(verbose_name='名前', max_length=40) 11 USER_IMG = models.ImageField(verbose_name='写真', upload_to='prof/', blank=True, null=True) 12 USER_VOICE = models.FileField(verbose_name='ボイス', upload_to='prof/', blank=True, null=True) 13 14 class Meta: 15 verbose_name_plural = 'プロフ' 16 17 def __str__(self): 18 return self.USER_NAME 19

forms

python

1from django import forms 2from .models import Prof_Type 3 4 5class Prof_Type_Form(forms.ModelForm): 6 class Meta: 7 model = Prof_Type 8 fields = ( 9 'USER_NAME', 'USER_IMG', 'USER_VOICE', 10 ) 11

views

python

1 2from django.contrib.auth.mixins import LoginRequiredMixin 3from django.urls import reverse_lazy 4from django.views import generic 5from .forms import Prof_Type_Form 6from .models import Prof_Type 7from django.contrib import messages 8 9# Create your views here. 10 11class Prof_Edit_View(LoginRequiredMixin, generic.CreateView): 12 template_name = "prof_edit.html" 13 form_class = Prof_Type_Form 14 model = Prof_Type 15 success_url = reverse_lazy('prof:prof_edit') 16 17 def form_valid(self, form): 18 prof = form.save(commit=False) 19 prof.USER_ID = self.request.user 20 prof.save() 21 messages.success(self.request, 'プロフを作成しました。') 22 return super().form_valid(form) 23 24 def form_invalid(self, form): 25 messages.error(self.request, "プロフの作成に失敗しました。") 26 return super().form_invalid(form) 27

URL

python

1from django.conf import settings 2from django.contrib import admin 3from django.contrib.staticfiles.urls import static 4from django.urls import path, include 5 6urlpatterns = [ 7 path('admin/', admin.site.urls), 8 path('', include('prof.urls')), 9 path('accounts/', include('allauth.urls')), 10] 11 12urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 13

settings

python

1BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 2 3MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 4 5MEDIA_URL = '/media/'

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

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

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

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

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

guest

回答1

0

ベストアンサー

HTMLをレンダリングするテンプレートにおいて、form要素に下記のenctypeを指定していますか?指定していた場合は、申し訳ありません。

html

1 2 <form method="post" enctype="multipart/form-data"> 3

投稿2020/04/05 06:58

編集2020/04/05 08:06
hasami

総合スコア1277

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

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

tarombone

2020/04/05 15:40

すみません。こちらはすでに記述していましたが、 HTMLに原因があったのでベストアンサーにさせていただきました。 原因はtableタグで囲んでいなかったのことでした。 全然解決できずに心が折れそうでした。 ご助力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問