django で画像をアップロードする方法がわかりません。ここで何十ものブログ投稿と質問を読みましたが、それらのほとんどは私をさらに混乱させるだけです.
これが私がこれまでに持っているものです。これは私のモデルです:
class Post(models.Model):
user = models.ForeignKey(User)
screenshot = models.ImageField(null=True, upload_to="images")
date = models.DateTimeField("date posted", auto_now=True)
text = models.TextField()
私が使用するフォームは次のとおりです。
class PostForm(forms.Form):
text = forms.CharField(
widget = forms.Textarea(attrs = {'cols': 40, 'rows': 10}), required=True)
screenshot = forms.ImageField(required=False)
そして、現在フォームを処理する方法は次のとおりです。
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = Post(
user = request.user,
text=form.cleaned_data['text'],
screenshot=form.cleaned_data['screenshot']
)
post.save()
しかし、これは機能しません。ファイルはサーバーにアップロードされません。ファイルのアップロードに関するドキュメントによると、独自の handle_uploaded_file 関数を作成する必要がありますが、そのページには説明がありません:
- アップロードしたファイルの保存場所を確認するにはどうすればよいですか?
- ファイルを複数のディレクトリに分散するにはどうすればよいですか?
- 同じ名前の 2 つのファイルが互いに上書きされないようにするにはどうすればよいですか?
- モデルの ImageField に割り当てる値は何ですか?
それらの問題はすでに千回解決されているようです...