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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

920閲覧

《python3、django2》formで作成した入力画面が動かない

chercher

総合スコア7

Django

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/05/29 13:49

編集2018/05/30 00:35

質問事項

初歩的な質問です。
python3、django2でアプリケーション作成中にformで画面が遷移せず。
エラーは出ていません。htmlで送信ボタンを作成して押しているのですが、反応しません。
プロジェクト名book、アプリケーション名recommendです。
以下が作成したファイルです。
updateとaddの両方出ます。adminサイトではできます。

どなたかご教授お願い致します。

book/urls.py

from django.contrib import admin from django.urls import path, include from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('', include('recommend.urls')) ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

recommend/urls.py

python3

1from django.urls import path 2from . import views 3 4app_name = 'recommend' 5 6urlpatterns =[ 7 path('', views.IndexView.as_view(), name='index'), 8 path('add/', views.AddView.as_view(), name='add'), 9 path('update/<int:pk>', views.UpdateView.as_view(), name='update'), 10 path('detail/<int:pk>', views.DetailView.as_view(), name='detail'), 11] 12

models.py

from django.db import models from django.utils import timezone class Genre(models.Model): name = models.CharField('ジャンル名', max_length=30) created_at = models.DateTimeField('日付', default=timezone.now) def __str__(self): return self.name class Relation(models.Model): name = models.CharField('ジャンル名', max_length=30) created_at = models.DateTimeField('日付', default=timezone.now) def __str__(self): return self.name class Book(models.Model): title = models.CharField('タイトル', max_length=50) author = models.CharField('著者', max_length=50) text = models.TextField('簡単な説明') genre = models.ForeignKey(Genre, verbose_name='ジャンル', on_delete=models.PROTECT, blank=True) relation = models.ManyToManyField(Relation, verbose_name='関連項目', blank=True) thumbnails = models.ImageField('画像', upload_to='thumbnails/', null=True, blank=True) created_at = models.DateTimeField('日付', default=timezone.now) def __str__(self): return self.title

views.py

from django.views import generic from django.urls import reverse_lazy from .models import Book from .forms import BookRecommendForm class IndexView(generic.ListView): model = Book paginate_by = 10 class AddView(generic.CreateView): model = Book form_class = BookRecommendForm success_url = reverse_lazy('recommend:index') class UpdateView(generic.UpdateView): model = Book form_class = BookRecommendForm success_url = reverse_lazy('recommend:index') class DetailView(generic.DetailView): model = Book

forms.py

from django import forms from .models import Book class BookRecommendForm(forms.ModelForm): class Meta: model = Book fields = '__all__'

book_form.html

{% extends 'recommend/base.html'%} {% block content %} <form action="" method="POST" enctype="multipart/form-data" class="mt-5"> <table class="table"> <tr> <th>タイトル</th> <td>{{form.title}}</td> </tr> <tr> <th>著者</th> <td>{{form.author}}</td> </tr> <tr> <th>簡単な説明</th> <td>{{form.text}}</td> </tr> <tr> <th>ジャンル</th> <td>{{form.genre}}</td> </tr> <tr> <th>関連項目</th> <td>{{form.relation}}</td> </tr> <tr> <th>画像</th> <td>{{form.thumbnails}}</td> </tr> </table> <p>一度登録すると削除はできません。</p> {% csrf_token%} <button type="submit" class="btn btn-primary">送信</button> </form> {% endblock %}

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

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

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

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

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

guest

回答2

0

自己解決

解決しました。
models.pyのクラスで指定したフィールド(7つ)が、forms.py内でもallと指定しているので
book_form.htmlのフォームも7つじゃないといけないのに、6つでした。
created_at = models.DateTimeField('日付', default=timezone.now)
に該当する入力フォームを追加したら解決できました。

投稿2018/06/01 09:51

chercher

総合スコア7

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

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

0

book_form.htmlの<form action="" ... のactionにurlがないからではないでしょうか。

投稿2018/05/31 11:43

tatamyiwathy

総合スコア1039

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問