python(Django)を学習しているのですが、まだ初級レベルのため下記エラーについて解決ができず、わかる方がいらっしゃいましたらご教示願います。
コード自体は間違っていないようなので、ディレクトリかファイルか何かのエラーでしょうか。
ターミナル
File "C:\Users\toshi\django_app\hello\urls.py", line 8, in <module> from . import views File "C:\Users\toshi\django_app\hello\views.py", line 6, in <module> from .forms import FindForm ImportError: cannot import name 'FindForm' from 'hello.forms' (C:\Users\toshi\django_app\hello\forms.py)
urls.py
urls.py
1from django.urls import path 2from . import views 3 4urlpatterns = [ 5 path('', views.index, name='index'), 6 path('create', views.create, name='create'), 7 path('edit/<int:num>', views.edit, name='edit'), 8 path('delete/<int:num>', views.delete, name='delete'), 9 path('find', views.find, name='find'),
views.py
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import redirect from .models import Friend from .forms import FriendForm from .forms import FindForm def index(request): data = Friend.objects.all() params = { 'title': 'Hello', 'data': data, } return render(request, 'hello/index.html', params) def create(request): if (request.method == 'POST'): obj = Friend() friend = FriendForm(request.POST, instance=obj) friend.save() return redirect(to='/hello') params = { 'title': 'Hello', 'form': FriendForm(), } return render(request, 'hello/create.html', params) def edit(request, num): obj = Friend.objects.get(id=num) if (request.method == 'POST'): friend = FriendForm(request.POST, instance=obj) friend.save() return redirect(to='/hello') params = { 'title': 'Hello', 'id': num, 'form': FriendForm(instance=obj), } return render(request, 'hello/edit.html', params) def delete(request, num): friend = Friend.objects.get(id=num) if (request.method == 'POST'): friend.delete() return redirect(to='/hello') params = { 'title': 'Hello', 'id': num, 'obj': friend, } return render(request, 'hello/delete.html', params) def find(request): if (request.method == 'POST'): msg = 'search result:' form = FindForm(request.POST) str = request.POST['find'] data = Friend.objects.filter(name__contains=str) else: msg = 'search words...' form = FindForm() data = Friend.objects.all() params = { 'title': 'Hello', 'message': msg, 'form': form, 'data': data, } return render(request, 'hello/find.html', params)
追記です。
モジュールのディレクトリ構造ですが、以下の通りとなります。
こういう感じで大丈夫でしょうか。
├─django_app │ │ asgi.py │ │ settings.py │ │ urls.py │ │ wsgi.py │ │ __init__.py │ │ │ └─__pycache__ │ settings.cpython-38.pyc │ urls.cpython-38.pyc │ wsgi.cpython-38.pyc │ __init__.cpython-38.pyc │ └─hello │ admin.py │ apps.py │ forms.py │ models.py │ tests.py │ urls.py │ views.py │ __init__.py │ ├─migrations │ │ 0001_initial.py │ │ __init__.py │ │ │ └─__pycache__ │ 0001_initial.cpython-38.pyc │ __init__.cpython-38.pyc │ ├─static │ └─hello │ └─css │ style.css │ ├─templates │ └─hello │ create.html │ delete.html │ edit.html │ find.html │ index.html │ └─__pycache__ admin.cpython-38.pyc forms.cpython-38.pyc models.cpython-38.pyc urls.cpython-38.pyc views.cpython-38.pyc __init__.cpython-38.pyc
尚、実行したコマンドは、サーバーに接続したときになります。
python manage.py runserver
この後にエラーが発生しました。
追記2:
更に追記ですみません。
forms.pyのコードは以下のようになります。
やはりクラスの間違いか何かでしょうか。
from django import forms from.models import Friend class FriendForm(forms.ModelForm): class Meta: model = Friend fields = ['name','mail','gender','age','birthday'] class FindForm(forms.Form): find = forms.CharField(label='Find', required=False)
すみませんがよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー