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

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

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

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

Q&A

解決済

1回答

7132閲覧

djangoのフォームが保存されない

shirasu10fish

総合スコア35

Django

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

0グッド

0クリップ

投稿2018/03/26 13:28

前提・実現したいこと

djangoを用いてウェブサイトを作成しています。
次のフォームを作成したのですが、フォームを入力し、登録ボタンを押した時、一切反応しません。
どこを修正すればよいかご教授ください。

views.pyの内容

制作でに参考にしたサイト

python

1from django.shortcuts import render 2from .models import question 3from .forms import q_add_form 4 5from django.contrib.auth.decorators import login_required 6 7 8@login_required 9def q_add(request): 10 11 if request.method == "POST": #フォームの入力を終えてすべてのフォームのデータともにviewに戻るとき 12 form = q_add_form(request.POST) #ProfileFormを作る(?) 13 14 if form.is_valid(): #フォームの値が正しい時 15 question = form.save(commit=False) #フォームを保存 ※commit=Falseでまだ保存しない 16 question.user = request.user 17 question.save() 18 return render(request, 'top/index.html', {}) 19 20 else: #初回アクセス時…空のフォームがほしいとき 21 form = q_add_form() 22 23 return render(request, 'qa/q_add.html', {"form":form} ) 24

models.pyの内容

python

1 2from django.contrib.auth.models import User 3from django.db import models 4 5from django.conf import settings 6 7class question(models.Model): 8 urltype_choice = ( 9 ('hoge1','hogehoge1'), 10 ('hoge2','hogehoge2') 11 ) 12 13 title = models.CharField('タイトル', max_length=100) 14 url = models.CharField('URL', max_length=1s00) 15 urltype = models.CharField('タイプ', choices = urltype_choice, max_length=100) 16 text = models.TextField('本文') 17 user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) 18 19 def __str__(self): 20 return self.name 21 22

forms.pyの内容

python

1from django import forms 2from django.contrib.auth.forms import UserCreationForm 3from .models import question 4 5 6 7class q_add_form (forms.ModelForm): 8 投稿ルールに同意する = forms.BooleanField() 9 10 class Meta: 11 model = question 12 fields = ( 13 'title', 'url', 'urltype', 'text' 14 ) 15 16 #bootstrapのパーツを使用 https://torina.top/detail/277/ 17 def __init__(self, *args, **kwargs): 18 super().__init__(*args, **kwargs) 19 for field in self.fields.values(): 20 field.widget.attrs["class"] = "form-control" 21

q_add.htmlの内容

html

1{% extends 'base.html' %} 2{% load bootstrap_toolkit %} 3 4{% block title %} 5質問フォーム 6{% endblock title %} 7 8 9{% block content %} 10 <h1>質問フォーム</h1> 11 12 {% csrf_token %} 13 <div class="well"> 14 {{ form.as_p }} <!--TODO! as_bootstrapに対応--> 15 <button type="submit" class="btn btn-primary">投稿</button> 16 </div> 17 18{% endblock content %}

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

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

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

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

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

guest

回答1

0

ベストアンサー

{{ from.as_p }} は inputタグなどを表示してくれますが、formタグそのものは生成しません。なので参考サイトにもあるように、formタグで囲ってください。

<form method="POST" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">Save</button> </form>

https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/django_forms/

投稿2018/03/26 16:24

tell_k

総合スコア2120

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

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

shirasu10fish

2018/03/26 21:15

上手く行きました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問