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

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

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

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

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

Q&A

1回答

4865閲覧

collectstaticが通らない

退会済みユーザー

退会済みユーザー

総合スコア0

Django

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

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

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

0グッド

2クリップ

投稿2019/09/02 09:19

編集2022/01/12 10:55

お世話になります。

python manage.py collectstatic

をうつと以下エラーがでます。

C:\Users\hoge\Desktop\04-ローカル開発環境\project>python manage.py collectstatic You have requested to collect static files at the destination location as specified in your settings. This will overwrite existing files! Are you sure you want to do this? Type 'yes' to continue, or 'no' to cancel: yes Traceback (most recent call last): File "manage.py", line 21, in <module> main() File "manage.py", line 17, in main execute_from_command_line(sys.argv) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line utility.execute() File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\core\management\__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\core\management\base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\core\management\base.py", line 364, in execute output = self.handle(*args, **options) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 188, in handle collected = self.collect() File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 114, in collect handler(path, prefixed_path, storage) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 342, in copy_file if not self.delete_file(path, prefixed_path, source_storage): File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\contrib\staticfiles\management\commands\collectstatic.py", line 249, in delete_file if self.storage.exists(prefixed_path): File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\core\files\storage.py", line 310, in exists return os.path.exists(self.path(name)) File "C:\Users\hoge\AppData\Roaming\Python\Python36\site-packages\django\contrib\staticfiles\storage.py", line 44, in path raise ImproperlyConfigured("You're using the staticfiles app " django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.

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

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

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

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

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

frodo821

2019/09/02 13:59

CreateSoundクラス内form_valid関数3行目: return redirect('apprication:sound') ここでreturnするとそれ以降の処理は行われませんが正常な動作ですか?
退会済みユーザー

退会済みユーザー

2019/09/02 14:05

ありがとうございます。すぐに質問を修正と追記します。
退会済みユーザー

退会済みユーザー

2019/09/02 14:16

質問に追加と修正を加えさせていただきました。お手数おかけしますがご確認おねがいします
frodo821

2019/09/02 14:19

追記のこれはそのまま書いたものをコピペですか? my_hogehoge.data_trans (file_path): SyntaxErrorが出ると思うのですが
退会済みユーザー

退会済みユーザー

2019/09/02 14:21

ちょっとわかりずらいので質問を大幅にいちから書き直しますね。
退会済みユーザー

退会済みユーザー

2019/09/02 14:30

追記修正しました。
guest

回答1

0

mergeディレクトリがあるディレクトリのパスをsys.pathに追加すればimportが可能になります。この際、mergeディレクトリには空でもいいので__init__.pyファイルがあることを確認してください。なければ作ってください。これがないとディレクトリがパッケージであると認識されません。

コードで気になっているのですが、

python

1my_function.data_trans (file_path,only_dir, file_name,only_file_name,extension_name):

の最後のコロンでSyntaxErrorになってませんか?


追記
質問の内容をまるごと書き換えてしまったのですね。Teratailでそういう行為は今後やめておいた方がいいかと思います。

新しい質問の回答ですが、

text

1django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.

これが全てです。テスト環境と本番環境はOSが違うとのことですが、STATIC_ROOTは適切に変えましたか? Windowsのパス構造とLinuxのパス構造は全く違うので、変えていなければ、そもそもパスとして有効な文字列ではないです。

投稿2019/09/02 14:42

編集2019/09/02 17:27
frodo821

総合スコア322

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

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

退会済みユーザー

退会済みユーザー

2019/09/02 14:43

なっていました!いま修正しています。
退会済みユーザー

退会済みユーザー

2019/09/02 14:44

データをアップロードすると ModuleNotFoundError at /movie/ No module named 'marge' とエラーがでます
退会済みユーザー

退会済みユーザー

2019/09/02 14:44

シンタックスは修正しました
frodo821

2019/09/02 14:45

from merge import my_function でimportしていますか?
frodo821

2019/09/02 14:46

それならmergeディレクトリがあるディレクトリのパスを追加してください
退会済みユーザー

退会済みユーザー

2019/09/02 14:47

追記いたします
退会済みユーザー

退会済みユーザー

2019/09/02 14:48

from merge import my_function でimportしていますか? スペルが違いますが from marge import my_function で書いてます
frodo821

2019/09/02 14:49

あ、完全に忘れてたんですけど、mergeディレクトリに空でもいいので__init__.pyはありますか?
退会済みユーザー

退会済みユーザー

2019/09/02 14:49

mergeに統一いたします
退会済みユーザー

退会済みユーザー

2019/09/02 14:50

ありません。追加いたします。中身はなしで
退会済みユーザー

退会済みユーザー

2019/09/02 14:50

追記いたしました
退会済みユーザー

退会済みユーザー

2019/09/02 14:52

ModuleNotFoundError at /movie/ No module named 'merge' エラーです。ディレクトリ構成を追記します。
退会済みユーザー

退会済みユーザー

2019/09/02 14:53

>それならmergeディレクトリがあるディレクトリのパスを追加してください views.pyとmergeフォルダは同じ階層に入ってます。 mergeフォルダの中には2つファイルが入ってます。 views.py merge __init__.py my_function.py
frodo821

2019/09/02 14:54

回答に追記しました。__init__.pyがないディレクトリはパッケージとして認識されません。つまり、このディレクトリの下のモジュールをfrom package import moduleという形でインポートできないということです。
退会済みユーザー

退会済みユーザー

2019/09/02 14:55

in form_valid from merge import my_function ModuleNotFoundError: No module named 'merge'
退会済みユーザー

退会済みユーザー

2019/09/02 14:55

エラー少し変わりました
frodo821

2019/09/02 14:55

from .merge import my_function に変えてみてください。
退会済みユーザー

退会済みユーザー

2019/09/02 14:59

いけそうです。 もうひとつの別のクラスから呼ぶ際も この一行をかけばいいのでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/02 15:00

name 'extension_name' is not defined エラーがfunction.pyに変わりました!
退会済みユーザー

退会済みユーザー

2019/09/02 15:03

my_function.py2行目にprint関数をしこみましたがまだ読み込まれていません。
frodo821

2019/09/02 15:07

読み込めていますよ。form_valid側の問題ですね。 form_valid内でextension_nameが定義されていません。
退会済みユーザー

退会済みユーザー

2019/09/02 15:10

スペースが4行多かったです。位置をずらしました。 name 'os' is not defined というエラーがでました。 importエラーだと思いますが、これはpyファイルごとに毎回指定しなければいけないものでしょうか? もともとのpyではたくさんモジュールをimportで読み込んでいます。
退会済みユーザー

退会済みユーザー

2019/09/02 15:10

多分毎回importしないといけないんですよね?
frodo821

2019/09/02 15:12

ファイルごとにimportする必要があります。 from .merge import my_function これもファイルの先頭にかけば1回で済みますよ
退会済みユーザー

退会済みユーザー

2019/09/02 15:15

ファイルごとにimportする必要があります。 了解しました。動きました。お忙しい中本当にありがとうございます。もう一点ぜひお伺いしたいことがあります。djangoの指定方法なのですがよろしいでしょうか
frodo821

2019/09/02 15:16

良いですよ。
退会済みユーザー

退会済みユーザー

2019/09/02 15:19 編集

djangoで123.txtをアップロードすると mediaフォルダの中には123.txtが格納されます。 もういちど123.txtをアップロードした場合 djangoは123_cAruYfi.txt という風に適当な文字を付与してくれて保存してくれますが この変更された「123_cAruYfi.txt」というファイル名を取得する変数設定方法をご教示ください。 file_name = os.path.basename(file_path) だとあくまでユーザがつけた名前(123.txt)となってしまい djangoが生成したファイル名「123_cAruYfi.txt」取得ができません。 お手数をおかけいたしますがよろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2019/09/02 15:18

ありがとうございます!
退会済みユーザー

退会済みユーザー

2019/09/02 15:35

まじすか。すごい。すぐ試します
退会済みユーザー

退会済みユーザー

2019/09/02 15:37

Modelは以下です class Movie(models.Model): upload = models.FileField('必須', upload_to='user_movie/',validators=[FileExtensionValidator(['mp4', 'avi', 'mov', 'wmv', 'flv', 'mpg'])],) created_at = models.DateTimeField('作成日', auto_now_add=True) updated_at = models.DateTimeField('更新日', auto_now=True) def __str__(self): return self.title
退会済みユーザー

退会済みユーザー

2019/09/02 15:42

NameError at /movie/ name 'newfile' is not defined がでました
退会済みユーザー

退会済みユーザー

2019/09/02 15:45

file_path = movie.upload.name 現在のバスとして上記は正しく動きます。 つまりModelで設定したクラス名(インスタンス)とファイルフィールド名は movieと .uploadです。 そこで new_file_name = newfile.upload.pathとしたところエラーとなりました
退会済みユーザー

退会済みユーザー

2019/09/02 15:49

できました!movie.upload.pathと設定する事でターゲットになりました。ご教示頂いたstackoverlowのおかげです。ありがとうございます。
frodo821

2019/09/02 15:50

ごめんなさい、ボケてました。 コメント修正しました。 その場合はmovie.upload.pathです
退会済みユーザー

退会済みユーザー

2019/09/02 15:54

とんでもないです。何日も探していたので本当に嬉しいです。もう一点あるのですが。。。
frodo821

2019/09/02 15:58

なんでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/02 16:02

djangoを利用し 開発環境(win10)ではCSSが正常に効きます。 本番環境(linux)ではCSSが効きません。 そこでおかしいと思い 開発環境で python manage.py collectstatic を打ったところ以下エラーが出ました。
退会済みユーザー

退会済みユーザー

2019/09/02 16:08 編集

コメント部分ですとかなりみずらいため質問を変えました。あとものすごい感謝してるのでベストアンサーとさせていただきました。
退会済みユーザー

退会済みユーザー

2019/09/02 16:24

ちなみにcollectstaticはエラーですが開発環境でCSSは正常に効いています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問