前提・実現したいこと
Django バージョン3.0.2
pythonバージョン3.7.4
を使用して顧客の情報を管理するシステムを構築しています。
その一機能として、画像ファイルをImageFieldを使いアップロードするように実装しています。
その際、ModelFormを使用してフォームを作成しています。
新規投稿に関してはうまくprojectフォルダ配下のimagesフォルダに保存されるのですが、
編集機能で表示される「現在」の部分のファイルのリンク
(images/スクリーンショット_2020-04-22_0.41.31.pngのaタグのhref)
現在: images/スクリーンショット_2020-04-22_0.41.31.png クリア 変更: ファイル選択 選択されていません
がimages/スクリーンショット_2020-04-22_0.41.31.pngと指定されており、
編集ページのURL/images/スクリーンショット_2020-04-22_0.41.31.pngにリンクが飛ぶようになってしまい
登録済みの画像を見ることができない状態になってしまっています。
(Page Not Found)
どのように対応すれば良いかアドバイスをいただけないでしょうか?
該当のソースコード
・モデルの定義
nameCard = models.ImageField(verbose_name='画像', upload_to='images',blank=True, null=True)
・modelForm
class CustomerForm(ModelForm): """顧客のフォーム""" class Meta: model = Customer fields = '__all__'
・view
def customer_edit(request, customer_id=None): if customer_id: customer = get_object_or_404(Customer, pk=customer_id) else: customer = Customer() if request.method == 'POST': form = CustomerForm(request.POST, instance=customer) #form = CustomerForm(request.POST, request.FILES) if form.is_valid(): customer = form.save(commit=False) if "nameCard" in request.FILES: customer.nameCard = request.FILES["nameCard"] customer.save() return redirect('cms:customer_list') else: # GET の時 form = CustomerForm(instance=customer) return render(request, 'cms/customer_edit.html', dict(form=form, customer_id=customer_id))
・template
{% if customer_id %} <form action="{% url 'cms:customer_mod' customer_id=customer_id %}" method="post" enctype="multipart/form-data"> {% else %} <form action="{% url 'cms:customer_add' %}" method="post" enctype="multipart/form-data"> {% endif %} {% csrf_token %} {% bootstrap_form form layout='horizontal' %} <div class="form-group row"> <div class="offset-md-3 col-md-9"> <button type="submit" class="btn btn-primary">送信</button> </div> </div> </form>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。