문제

난 노력 중이야 효과적인 Django 튜토리얼 시리즈.현재 앱에서 사용할 사용자 정의 양식을 만드는 데 문제가 있습니다.지시에 따라 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번째 줄은 views.py에서 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'

디렉터리 트리에서 볼 수 있듯이 form.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 ~에서 contacts 그래서

from contacts import forms

아니면 시도해 볼 수 있습니다

import .forms

다른 팁

다음과 같이 하는 것이 적절합니다.

from forms import FormClassName

아니면 할 수 있습니다

from forms import *

하지만 꼭 필요한 것은 아닙니다.다른 앱에서는 다음을 수행해야 합니다.

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

Python이 가져오기를 검색하는 디렉터리를 가져올 때 프로젝트 루트이고 양식이라는 이름의 모듈이 없습니다.

따라서 테스트하려면 프로젝트 루트에 form이라는 파일을 생성하면 해당 파일을 가져옵니다.

그렇게 하면 다음과 같은 방법이 확실히 작동할 것입니다.

from contacts.forms import FormClassName # or wildcard '*'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top