Question

Je suis en train de travailler à travers Efficace de Django reinhardt tutoriel de la série.Je suis actuellement un problème en essayant de créer un formulaire personnalisé à utiliser dans une application.J'ai créé le forms.py fichier comme indiqué dans cette partie du tutoriel, et faites les modifications de mon views.py fichier.Mon répertoire de la structure ressemble à ceci:

(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

Le problème est que lorsque j'essaie de charger le site, j'obtiens l'erreur suivante:

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'

La ligne 5 est la ligne dans views.py où je peux importer les forms.py fichier.L'extrait de code (avec quelques lignes de tampon) est:

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'

Comme vous pouvez le voir à partir de l'arborescence du répertoire, l'forms.py le fichier doit être accessible.Je ne sais pas pourquoi j'obtiens le message d'erreur.Des idées?

Edit 1

J'ai essayé de changer l'importation de from forms import ContactForm avant de poster à l'origine.J'ai toujours le même message d'erreur:

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

La solution

Autant que je sache, il y avait des changements dans le système d'importation en Python 3.Juste être plus précis sur ce que vous souhaitez importer.Je suppose que vous voulez importer forms.py à partir de contacts donc

from contacts import forms

ou vous pouvez essayer

import .forms

Autres conseils

C'est propper faire comme cela:

from forms import FormClassName

Ou vous pouvez

from forms import *

mais ce n'est pas nessesary.À partir d'autres applications, vous devez

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

Lors de l'importation du répertoire python recherches à l'importation est racine du projet et il n'y a pas de module nommé en tant que formes.

Donc si tu veux tester, créez un fichier nommé formes dans la racine du projet et il va l'importer.

De cette façon la suite sera sûrement travail

from contacts.forms import FormClassName # or wildcard '*'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top