前提・実現したいこと
add.htmlに入力した内容をデータベースに追加後、リダイレクトでindex.htmlを表示したい
発生している問題・エラーメッセージ
送信ボタンを押してもデータが送信されない。 解答欄の内容が消えて同じページが表示される データベースを見てみても記録されてません。
該当のソースコード
views
1 2from django.shortcuts import render, redirect 3from .models import post 4from .forms import PostCreateForm 5 6def index(request): 7 context = { 8 'posts':post.objects.all() 9 } 10 return render(request, 'zerowaste/index.html', context) 11 12def add(request): 13 form = PostCreateForm(request.POST or None) 14 15 if request.method == 'POST' and form.is_valid(): 16 form.save() 17 return redirect('zerowaste:index') 18 19 context = { 20 'form':PostCreateForm() 21 } 22 return render(request, 'zerowaste/add.html', context)
forms
1from django import forms 2from .models import post 3 4class PostCreateForm(forms.ModelForm): 5 6 class Meta: 7 model = post 8 fields = '__all__'
models
1from django.db import models 2 3# Create your models here. 4 5class post(models.Model): 6 post_title = models.CharField(max_length=200, verbose_name='商品名') 7 post_image = models.ImageField(upload_to='media/', verbose_name='写真') 8 post_price = models.PositiveIntegerField(verbose_name='値段') 9 post_address = models.CharField(max_length=200,verbose_name='住所') 10 post_date = models.DateTimeField('投稿日時', auto_now_add=True) 11 12 def __str__(self): 13 return self.post_title
addhtml
1{% extends 'zerowaste/index.html' %} 2 3{% block contents %} 4<form action="" method="POST"> 5{{ form.as_p}} 6<button type="submit">送信</button> 7{% csrf_token %} 8</form> 9{% endblock %}
urlpy
1from django.urls import path 2from django.conf import settings 3from django.conf.urls.static import static 4from . import views 5 6app_name = 'zerowaste' 7 8urlpatterns = [ 9 path('', views.index, name='index'), 10 path('add/', views.add, name='add'), 11]
試したこと
views.pyの
context = { 'form':PostCreateForm() } return render(request, 'zerowaste/add.html', context)
が機能してると思うので
form = PostCreateForm(request.POST or None) if request.method == 'POST' and form.is_valid(): form.save() return redirect('zerowaste:index')
上記に問題があると思うのですが、どこを間違えてるのか分かりません。
初学者でありますので必要な情報あれば教えてください。
何卒、よろしくお願いします。
追記:画像ファイルを載せないようにするとうまく行きましたが画像ファイルも保存したいので引き続き有識者の方コメント頂けると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。