Django import error: No module named Modelle
Ich bekomme immer wieder den Fehler Could not import movies.views. Error was: No module named models
Hier ist mein traceback:
Environment:
Request Method: GET
Request URL: http://localhost:8000/movies/awesome-movie/
Django Version: 1.3.1
Python Version: 2.7.3
Installed Applications:
['django.contrib.auth',
'username_patch',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.flatpages',
'south',
'tagging',
'tagging_autocomplete',
'accounts',
'movies',
'tracking',
'djcelery',
'pagination']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'pagination.middleware.PaginationMiddleware')
Traceback:
File "/Users/jeff/Code/filmlibrary/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/Users/jeff/Code/filmlibrary/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
252. sub_match = pattern.resolve(new_path)
File "/Users/jeff/Code/filmlibrary/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
252. sub_match = pattern.resolve(new_path)
File "/Users/jeff/Code/filmlibrary/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
158. return ResolverMatch(self.callback, args, kwargs, self.name)
File "/Users/jeff/Code/filmlibrary/lib/python2.7/site-packages/django/core/urlresolvers.py" in _get_callback
167. raise ViewDoesNotExist("Could not import %s. Error was: %s" % (mod_name, str(e)))
Exception Type: ViewDoesNotExist at /movies/awesome-movie/
Exception Value: Could not import movies.views. Error was: No module named models
Ich bin nicht sicher, warum habe ich diesen Fehler. Mein code ist wie folgt...
Habe ich eine django-app namens tracking
genannt movies
. Ich habe eine python-Datei namens tracking.py
im tracking
- app besteht aus den folgenden code:
filmlibrary/tracking/tracking.py
from movies.models import Movie
from tracking.models import MovieView
import os
import base64
def tracking_id(request):
try:
return request.session['tracking_id']
except KeyError:
request.session['tracking_id'] = base64.b64encode(os.urandom(36))
return request.session['tracking_id']
def log_movie_view(request, movie):
t_id = tracking_id(request)
try:
v = MovieView.objects.get(tracking_id=t_id, movie=movie)
v.save()
except MovieView.DoesNotExist:
v = MovieView()
v.movie = movie
v.ip_address = request.META.get('REMOTE_ADDR')
v.tracking_id = t_id
v.user = None
if request.user.is_authenticated():
v.user = request.user
v.save()
Oben ist ziemlich grundlegende Dinge. Meine views.py
in meinem movies
app verwendet tracking.py Datei hier:
filmlibrary/movies/views.py
@login_required
def movie_details(request, slug, template_name="movies/movie_detail.html"):
movie = get_object_or_404(Movie, slug=slug)
movie.tracking_id = tracking.tracking_id(request)
movie.save()
tracking.log_movie_view(request, movie)
context = RequestContext(request, {'movie': movie })
if movie:
try:
screener = movie.moviemedia_set.get(movie_type='screener')
.... continued
UPDATE:
Hier der Inhalt der filmlibrary/tracking/models.py
from django.db import models
from django.contrib.auth.models import User
from movies.models import Movie
class PageView(models.Model):
class Meta:
abstract = True
date = models.DateTimeField(auto_now=True)
ip_address = models.IPAddressField()
user = models.ForeignKey(User, null=True)
tracking_id = models.CharField(max_length=50, default='')
class MovieView(PageView):
movie = models.ForeignKey(Movie)
Fehler erscheint, kommen die import-Zeile from tracking.models import MovieView
im tracking.py Datei-und ich bin nicht sicher, warum. Sobald ich den Kommentar aus dieser Zeile der Fehler geht Weg, aber dann werde ich natürlich neue Fehler über MovieView nicht vorhandene als erwartet. Ich sehe nicht, nichts falsch mit, dass die import-Zeile in tracking.py.
Hat jemand irgendwelche Vorschläge, warum bekomme ich diese Fehlermeldung und wie kann ich dies beheben?
models.py
Datei in der tracking
app?David, es ist... ich werde zu aktualisieren, die Frage mit Inhalt
Sieht aus wie Sie benötigen, um überprüfen Sie Ihre PYTHON_PATH
Django arbeitet anders als normale Python-Skripte - setzen Sie den Pfad zum Zugriff auf alle installierten apps.
Django ist keine Zauberei. Wie sind Sie envoking dies, wenn Sie die Fehler sehen? Hat der import funktioniert aus
./manage.py shell
?
InformationsquelleAutor tdelam | 2012-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen
von Modellen importieren MovieView
statt
zu verfolgen.Modelle importieren MovieView
Der Grund dafür ist, beide models.py und tracking.py in der gleichen app-Ordner "tracking" - Verfahren, brauchen Sie nicht zu schreiben-tracking.Modelle, machen Django denken, dass Sie einen Ordner mit dem Namen Modelle, die innerhalb der tracking-Verzeichnis.
Sie sind willkommen 🙂
InformationsquelleAutor Hari Palappetty
Obwohl dies eine gute Lösung in einigen Fällen wird dieser Fehler kann auch verursacht werden durch app-Namen Konflikte mit eingebauten apps.
Ich weiß, dass unser team aufgetreten ist dieser Fehler, und es war, weil der eigentliche app-name. Dies ist auch wichtig zu beachten, weil Sie nicht in der Lage zu ziehen, in Modellen zu anderen apps ist das der Fall.
Wenn das zweite Beispiel funktioniert nicht in Ihren Django-Projekt, das Sie verwenden möglicherweise einen Konflikt app-Namen. Gute Beispiele von unbrauchbaren eingebauten apps beinhalten (aber sind nicht beschränkt auf) "tests" und "admin".
Würde ich Vorsicht vor einem Wundpflaster zu beheben und zu untersuchen, Ihre app-name eng.
InformationsquelleAutor Joseph Dattilo