Django benutzerdefinierte Form ImportError obwohl sich die Datei im selben Verzeichnis befindet

Ich arbeite durch effektive Djangos Tutorial-Serie. Ich habe derzeit ein Problem, das versucht, ein benutzerdefiniertes Formular zu erstellen, um in einer App zu verwenden. Ich habe die form.py-Datei erstellt, wie in diesem Teil des Tutorials angewiesen, und machte die Änderungen an meiner views.py-Datei. Meine Verzeichnisstruktur sieht so aus:

(project root) | ├── address.db ├── addressbook │  ├── __init__.py │  ├── __pycache__ │  ├── settings.py │  ├── static │  ├── urls.py │  └── wsgi.py ├── contacts │  ├── __init__.py │  ├── admin.py │  ├── forms.py │  ├── models.py │  ├── templates │  ├── tests.py │  └── views.py ├── manage.py └── requirements.txt 

Das Problem ist, dass, wenn ich versuche, die Website zu laden, bekomme ich folgende Fehlermeldung:

  • Fixpunkt-Arithmetik
  • Python parallele Ausführung mit Selen
  • Wie kann ich eine JSON-Datei erstellen?
  • Numpy indexing: sollte nicht nachvollziehen Ellipsen werden redundant?
  • Python 3 print () Funktion mit Farsi / Arabisch Zeichen
  • Pandas: Wähle DF-Zeilen auf Basis eines anderen DF
  •  Traceback (most recent call last): File "/Users/wtodom/.virtualenvs/tutorial/lib/python3.3/site-packages/django/core/handlers/base.py", line 101, in get_response resolver_match = resolver.resolve(request.path_info) File "/Users/wtodom/.virtualenvs/tutorial/lib/python3.3/site-packages/django/core/urlresolvers.py", line 318, in resolve for pattern in self.url_patterns: File "/Users/wtodom/.virtualenvs/tutorial/lib/python3.3/site-packages/django/core/urlresolvers.py", line 346, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "/Users/wtodom/.virtualenvs/tutorial/lib/python3.3/site-packages/django/core/urlresolvers.py", line 341, in urlconf_module self._urlconf_module = import_module(self.urlconf_name) File "/Users/wtodom/.virtualenvs/tutorial/lib/python3.3/importlib/__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1586, in _gcd_import File "<frozen importlib._bootstrap>", line 1567, in _find_and_load File "<frozen importlib._bootstrap>", line 1534, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 586, in _check_name_wrapper File "<frozen importlib._bootstrap>", line 1024, in load_module File "<frozen importlib._bootstrap>", line 1005, in load_module File "<frozen importlib._bootstrap>", line 562, in module_for_loader_wrapper File "<frozen importlib._bootstrap>", line 870, in _load_module File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed File "/Users/wtodom/.virtualenvs/tutorial/addressbook/urls.py", line 4, in <module> import contacts.views File "/Users/wtodom/.virtualenvs/tutorial/contacts/views.py", line 5, in <module> import forms ImportError: No module named 'forms' 

    Zeile 5 ist die Zeile in views.py wo ich die forms.py Datei importiere. Das Code-Snippet (mit ein paar Zeilen Puffer) ist:

     from django.shortcuts import render from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView from django.core.urlresolvers import reverse from contacts.models import Contact import forms class ListContactView(ListView): model = Contact template_name = 'contact_list.html' 

    Wie Sie aus dem Verzeichnisbaum sehen können, sollte die Datei file.py zugänglich sein. Ich bin mir nicht sicher, warum ich den Fehler bekomme. Irgendwelche Ideen?

    Bearbeiten 1

    Ich habe versucht, den Import zu ändern from forms import ContactForm vor der Buchung ursprünglich. Ich habe immer den gleichen Fehler:

      File "/Users/wtodom/.virtualenvs/tutorial/contacts/views.py", line 5, in <module> from forms import ContactForm ImportError: No module named 'forms' 

    3 Solutions collect form web for “Django benutzerdefinierte Form ImportError obwohl sich die Datei im selben Verzeichnis befindet”

    Soweit ich weiß, gab es Änderungen im Import-System in Python 3. Nur genauer, was Sie importieren möchten. Ich forms.py davon aus, dass du forms.py von contacts so importieren forms.py

     from contacts import forms 

    Oder du kannst es versuchen

     import .forms 

    Es ist so, dass es so ist:

     from forms import FormClassName 

    Oder du kannst

     from forms import * 

    Aber es ist nicht nessesary. Von anderen apps müssen Sie

     from contacts.forms import FormClassName # or wildcard '*' 

    Beim Importieren des Verzeichnisses, das python nach import sucht, ist das Projekt root und es gibt kein Modul, das als Formulare benannt wird.

    Also, wenn Sie testen möchten, erstellen Sie eine Datei namens Formulare im Projekt root und es wird es importieren.

    Auf diese Weise wird sicherlich funktionieren

     from contacts.forms import FormClassName # or wildcard '*' 
    Python ist die beste Programmiersprache der Welt.