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

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

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

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

Python 3.x

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

Q&A

1回答

387閲覧

ユーザー登録機能の実装

hiyokorunner

総合スコア18

Django

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

Python 3.x

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

0グッド

0クリップ

投稿2019/07/08 05:21

djangoのUserCreateFormを用いて「ユーザー登録機能の実装」をしています。
フォームに内容を入力して送信ボタンを押すと以下のエラー(OperationalError at /diary/user_create/)が出てしまうのですが、何が原因でしょうか?

↓<エラー内容>

django

1OperationalError at /diary/user_create/ 2no such table: diary_user 3Request Method: POST 4Request URL: http://127.0.0.1:8080/diary/user_create/ 5Django Version: 2.2.3 6Exception Type: OperationalError 7Exception Value: 8no such table: diary_user 9Exception Location: C:\Users***\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 383 10Python Executable: C:\Users***\AppData\Local\Programs\Python\Python36\python.exe 11Python Version: 3.6.3 12Python Path: 13['C:\Users\***\Udemy\django\project(instagram)', 14 'C:\Users\***\AppData\Local\Programs\Python\Python36\python36.zip', 15 'C:\Users\***\AppData\Local\Programs\Python\Python36\DLLs', 16 'C:\Users\***\AppData\Local\Programs\Python\Python36\lib', 17 'C:\Users\***\AppData\Local\Programs\Python\Python36', 18 'C:\Users\***\AppData\Roaming\Python\Python36\site-packages', 19 'C:\Users\***\AppData\Local\Programs\Python\Python36\lib\site-packages']

↓<models.py>

django

1from django.db import models 2from django.core.mail import send_mail 3from django.contrib.auth.models import PermissionsMixin 4from django.contrib.auth.base_user import AbstractBaseUser 5from django.utils.translation import ugettext_lazy as _ 6from django.utils import timezone 7from django.contrib.auth.base_user import BaseUserManager 8 9class Day(models.Model): 10 title = models.CharField('タイトル', max_length = 200) 11 text = models.TextField('本文') 12 date = models.DateTimeField('日付', default = timezone.now) 13 14 def __str__(self): 15 return self.title 16 17class User(AbstractBaseUser): 18 email = models.EmailField(_('email address'), unique=True) 19 first_name = models.CharField(_('first name'), max_length=30, blank=True) 20 last_name = models.CharField(_('last name'), max_length=150, blank=True) 21 22 EMAIL_FIELD = 'email' 23 USERNAME_FIELD = 'email' 24 REQUIRED_FIELDS = [] 25 26 class Meta: 27 verbose_name = _('user') 28 verbose_name_plural = _('users') 29

↓<user_create.html>

django

1{% extends "diary/base.html" %} 2{% block content %} 3<form action="" method="POST"> 4 {{ form.non_field_errors }} 5 {% for field in form %} 6 <div class = 'form-group'> 7 <label for="{{ field.id_for_label }}">{{ field.label_tag }}</label> 8 {{ field }}\ 9 {{ field.errors }} 10 </div> 11 {% endfor %} 12 {% csrf_token %} 13 <button type="submit" class="btn btn-primary btn-lg">送信</button> 14</form> 15 16{% endblock %} 17

↓<forms.py>

django

1from django import forms 2from .models import Day, User 3from django.contrib.auth.forms import ( 4 UserCreationForm, 5) 6 7class DayCreateForm(forms.ModelForm): 8 class Meta: 9 model = Day 10 fields = '__all__' # ('title', 'text', 'date') 11 12class UserCreateForm(UserCreationForm): 13 class Meta: 14 model = User 15 fields = ('email',) 16

↓<views.py>

django

1from django.conf import settings 2from django.contrib.auth import get_user_model 3from django.contrib.auth.mixins import LoginRequiredMixin 4from django.contrib.auth.views import (LoginView, LogoutView) 5from django.contrib.sites.shortcuts import get_current_site 6from django.shortcuts import render, redirect, get_object_or_404 7from django.http import Http404, HttpResponseBadRequest 8from django.urls import reverse_lazy 9from django.views import generic 10from .forms import (DayCreateForm, UserCreateForm) 11from .models import Day 12 13# ユーザ関連 14from django.contrib.auth import login 15from django.contrib.auth.forms import UserCreationForm 16from django.http import HttpResponseRedirect 17from django.views.generic.edit import CreateView 18 19class IndexView(generic.ListView): 20 model = Day 21 paginate_by = 3 22 23class AddView(LoginRequiredMixin, generic.CreateView): 24 model = Day 25 form_class = DayCreateForm 26 success_url = reverse_lazy('diary:index') 27 28class UpdateView(LoginRequiredMixin, generic.UpdateView): 29 model = Day 30 form_class = DayCreateForm 31 success_url = reverse_lazy('diary:index') 32 33class DeleteView(LoginRequiredMixin, generic.DeleteView): 34 model = Day 35 success_url = reverse_lazy('diary:index') 36 37class DetailView(generic.DetailView): 38 model = Day 39 40 41class UserCreate(generic.CreateView): 42 template_name = 'diary/user_create.html' 43 form_class = UserCreateForm 44 45 def form_valid(self, form): 46 user = form.save(commit = False) 47 user.save() 48 return redirect('diary:user_create_done') 49 50 51class UserCreateDone(generic.TemplateView): 52 template_name = 'register:user_create_done'

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

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

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

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

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

guest

回答1

0

no such table: diary_userと出ているのでmigrateが出来ていない可能性があります。
新しいモデルならば

$ python manage.py makemigrations $ python manage.py migrate

をしてみてください。

投稿2019/07/30 08:11

shotanuki

総合スコア102

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問