2013-07-26 21 views
5

Ich habe versucht, Django für die letzten paar Tage zu lernen, aber vor kurzem bin ich auf ein Problem gestoßen, das ich nicht zu reparieren scheinen kann. Nachdem ich Djangos eigenes Tutorial zum Schreiben Ihrer ersten App beendet hatte, beschloss ich, es noch einmal durchzugehen. Erst jetzt würde ich alles ersetzen, um die Anforderungen der ursprünglichen App zu erfüllen, die ich gerade entwickelte.Django: 'Modul' Objekt hat kein Attribut 'Index'

So ging alles gut, bis ich zum Teil bekam 3. Wenn ich versuche, http://localhost:8000/lru/ zu laden bekomme ich folgende Fehlermeldung:

AttributeError at /lru/ 
'module' object has no attribute 'index' 

Traceback:

Internal Server Error: /favicon.ico 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 92, in get_response 
    response = middleware_method(request) 
    File "/Library/Python/2.7/site-packages/django/middleware/common.py", line 69, in process_request 
    if (not urlresolvers.is_valid_path(request.path_info, urlconf) and 
    File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 551, in is_valid_path 
    resolve(path, urlconf) 
    File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 440, in resolve 
    return get_resolver(urlconf).resolve(path) 
    File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 319, in resolve 
    for pattern in self.url_patterns: 
    File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 347, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 342, in urlconf_module 
    self._urlconf_module = import_module(self.urlconf_name) 
    File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Users/oyvindhellenes/Desktop/Sommerjobb 2013/mysite/mysite/urls.py", line 10, in <module> 
    url(r'^lru/', include('lru.urls', namespace="lru")), 
    File "/Library/Python/2.7/site-packages/django/conf/urls/__init__.py", line 25, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module 
    __import__(name) 
    File "/Users/oyvindhellenes/Desktop/Sommerjobb 2013/mysite/lru/urls.py", line 6, in <module> 
    url(r'^$', views.index, name='index') 
AttributeError: 'module' object has no attribute 'index' 

Mein Code:

views.py

from django.http import HttpResponse 

def index(request): 
    return HttpResponse("Hello, world. You're at the poll index.") 

lru/urls.py

from django.conf.urls import patterns, url 

from lru import views 

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index') 
) 

mysite/urls.py

from django.conf.urls import patterns, include, url 

from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^polls/', include('polls.urls', namespace="polls")), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^lru/', include('lru.urls', namespace="lru")), 
) 

wie Meine Ordnerstruktur aussieht:

mysite/ 
    lru 
    templates 
    polls 
    manage.py 
    mysite 

lru/ 
    templates 
    urls.py 
    admin.py 
    __init__.py 
    models.py 
    tests.py 
    views.py 

Es ist seltsam, weil ich alles genau so, wie getan habe Ich habe in den "Umfragen" Beispiel Turtorial gemacht. Einfach die Namen ersetzen. Wenn ich in mysite/urls.py url(r'^lru/', include('lru.urls', namespace="lru")), auskommentiere, dann funktioniert http://localhost:8000/polls/ gut, aber ich kann einfach nicht scheinen,/lru zu arbeiten.

Das bringt mich wirklich um, also wäre jede Form der Hilfe dankbar!

Edit: Hinzugefügt vollständige Zurückverfolgungs

+0

In welcher Datei und Zeile tritt der Fehler auf? –

+0

Können Sie die vollständige Rückverfolgung anzeigen? –

Antwort

3

Entweder dies tun:

from lru.views import * 

urlpatterns = patterns(
    '', 
    url(r'^$', index, name='index') 
) 

oder

from lru import views 

urlpatterns = patterns(
    '', 
    url(r'^$', 'views.index', name='index') 
) 

Ich hoffe, das hilft.

+0

Das hat mein Problem behoben. Vielen Dank! Aber ich bekomme nicht warum/Umfragen funktioniert ohne Importieren ... –

+0

Ich denke, es ist eine gute Idee, einen Tag zu warten, bevor eine Antwort als richtig markiert, da Antworten manchmal suboptimal sind, auch wenn sie das Problem zu lösen scheinen. In dieser speziellen Antwort mag ich den 'import *' in der ersten Lösung nicht (es ist eine schlechte Praxis), und ich verstehe nicht, warum die Anweisung 'from lru import views' in der zweiten Lösung benötigt wird. –

+0

Ihr wahrscheinlich richtig. Ich bin neu hier, kenne die Normen noch nicht. Wie für die Import-Anweisung ('von Lru-Import-Ansichten'). Ich bekomme 'NameError at/lru/ Name 'Ansichten' ist nicht definiert ' wenn ich es entfernen, so denke ich, es ist erforderlich. –

1

Das zweite Argument von url() sollte string, anway sein ich die lru/urls.py ändern würde:

from django.conf.urls import patterns, url 

urlpatterns = patterns('', 
    url(r'^$', 'lru.views.index', name='lru-index') 
) 

Hoffe, es hilft!

1

Importieren Sie das Modul urls.py in Ihre Ansicht. so was;

from django.http import HttpResponse 
from . import urls 

def index(request): 
    return HttpResponse("Hello, world. You're at the poll index.") 
Verwandte Themen