Django初学者です。
現在、「pythonで作るWEBアプリケーション開発入門その2」という書籍で勉強しています。
そこでformを使ってDbを更新し、一覧を取得して表示するという簡単なプログラムを書籍に沿って記述していたのですが
どうしてもわからず質問させていただきます。
解決したいこと
■フォームで送信した内容をDBに格納してそれを一覧に表示したい。(←これを実現したいです。)
エラーはターミナルにも出ていなくpython manage.py runserverを実行して問題なく起動できます。
ですがブラウザからlocalhost:8000/formから内容を記述し送信ボタンを押してもでフォームの画面に戻ってしまいます。(DBに格納されません。)
リダイレクトされているのかなと思いリダイレクト先をすべて(to="/")に変更しましたが
リダイレクトされていませんでした。
そもそもプログラム自体が動いていないような気もします。
いろいろ調べて試しましたがお手上げ状態でして・・・
他に必要な情報等ありましたらお申し付けください。
お力添え宜しくお願いいたします。
以下、現在記述しているコード
views.py
1from django.shortcuts import render, redirect 2from .models import Feed 3from .forms import FeedForm 4 5def index(request): 6 feeds = Feed.objects.all() 7 return render(request, 'index.html', {'feeds': feeds}) 8 9def form(request): 10 form = FeedForm() 11 return render(request, 'form.html', {'form': form}) 12 13def post(request): 14 if request.method != 'POST': 15 return redirect(to="/form") 16 form = FeedForm(request.POST) 17 if form.is_valid(): 18 feed = Feed.objects.create(title=request.POST['title'], description=request.POST['description'], href=request.POST['href']) 19 feed.save() 20 return redirect(to="/") 21 else: 22 return redirect(to="/form") 23
models.py
1from django.db import models 2 3class Page(models.Model): 4 id = models.AutoField(primary_key=True) 5 title = models.CharField(max_length=256) 6 description = models.CharField(max_length=1024) 7 href = models.URLField(max_length=2018) 8 date_published = models.DateField() 9 10class Feed(models.Model): 11 id = models.AutoField(primary_key=True) 12 title = models.CharField(max_length=256) 13 description = models.CharField(max_length=1024) 14 href = models.URLField(max_length=2084) 15 rss = models.URLField(max_length=2084) 16
forms.py
1from django.forms import Form, CharField, URLField 2 3class FeedForm(Form): 4 title = CharField(max_length=256) 5 description = CharField(max_length=1024) 6 href = URLField(max_length=2084) 7
index.html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"/> 5 </head> 6 <body> 7 <table class="table"> 8 <thead> 9 <tr> 10 <th scope="col"></th> 11 <th scorp="col">タイトル</th> 12 <th scope="col">説明</th> 13 <th scope="col">フィードのURL</th> 14 </tr> 15 </thead> 16 <tbody> 17 {% for feed in feeds %} 18 <tr> 19 <th scope="row">{{ forloop.counter }}</th> 20 <td>{{ feed.title }}</td> 21 <td>{{ feed.description }}</td> 22 <td>{{ feed.href }}</td> 23 </tr> 24 {% endfor %} 25 </tbody> 26 </table> 27 </body> 28</html> 29
form.html
1<form acction="/post" method="POST"> 2 {% csrf_token %} 3 {{ form }} 4 <button type="submit">送信</button> 5</form> 6
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 02:42