ファイルが同じディレクトリにある場合でも、DjangoカスタムフォームImportError

StackOverflow https://stackoverflow.com//questions/20029305

質問

私は効果的なDjango's チュートリアルシリーズを介して働いています。私は現在、アプリで使用するカスタムフォームを作成しようとしている問題を抱えています。この部分のこの部分で指示されたようにforms.pyファイルを作成し、この変更を行いました。私のViews.pyファイル。マイディレクトリ構造は次のようになります。

(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
.

問題は、サイトをロードしようとすると、次のエラーが発生した場合:

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'
.

行5は、forms.pyファイルをインポートします。コードスニペット(数行のバッファーを持つ)は次のとおりです。

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'
.

ディレクトリツリーからわかるように、forms.pyファイルにアクセスできるはずです。私はなぜ私がエラーを得ているのかわかりません。任意のアイデア?

編集1

もともと転記する前に、from forms import ContactFormへのインポートを変更しました。私はまだ同じエラーを持っています:

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

役に立ちましたか?

解決

Python 3の輸入システムの変更があったとおりにわかっている限り、インポートしたいものについてもっと具体的になるだけです。forms.py SO

からcontactsをインポートしたいと思います。
from contacts import forms
.

または

を試すことができます
import .forms
.

他のヒント

このようなことをするためのプロセス:

from forms import FormClassName
.

またはあなたは

from forms import *
.

しかしそれは永久的ではありません。 他のアプリからあなたは

を服用しなければなりません
from contacts.forms import FormClassName # or wildcard '*'
.

importのPython検索がプロジェクトrootのディレクトリをインポートし、フォームとして名前が付けられたモジュールはありません。

だから、プロジェクトのrootでフォームという名前のファイルを作成したい場合はインポートします。

そのようにしてきっとうまく働く

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top