2017-07-14 6 views
0

Ich habe einen urls und views Ordner erstellt, wie templates, aber es funktioniert nicht. Ich erhalte Fehler: Exception Value: No module named urlsdjango- Exception-Wert: Kein Modul namens urls

Hier ist, was mein Projekt wie folgt aussieht:

requirements.txt:

Django==1.6.5 
pymongo==2.8 

.

├── DjangoProject 
│   ├── DjangoProject 
│   │   ├── app 
│   │   │   ├── __init__.py 
│   │   │   ├── __init__.pyc 
│   │   │   ├── models.py 
│   │   │   ├── models.pyc 
│   │   │   ├── templates 
│   │   │   ├── tests.py 
│   │   │   ├── urls 
│   │   │   │   └── test.py 
│   │   │   └── views 
│   │   │    └── test.py 
│   │   ├── __init__.py 
│   │   ├── __init__.pyc 
│   │   ├── settings.py 
│   │   ├── settings.pyc 
│   │   ├── urls.py 
│   │   ├── wsgi.py 
│   │   └── wsgi.pyc 
│   └── manage.py 
└── requirements.txt 

settings.py Datei:

INSTALLED_APPS = (
    'DjangoProject.app', 
    ........ 
) 
ROOT_URLCONF = 'DjangoProject.app.urls' 

DjangoProject/urls.py:

urlpatterns = patterns('', 
    url(r'^$', include('DjangoProject.app.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

app/Urls/test.py:

from django.conf.urls import patterns, url 
urlpatterns = patterns('DjangoProject.app.views.test', 
     url(r'^/create/$','first_view',name='first_view'), 
) 

app/views /test.py:

from django.shortcuts import render, render_to_response 
from django.http import HttpResponse 
from django.template import loader 
from django.template import RequestContext 

def first_view(request): 
    return HttpResponse("Hi") 
+0

Ich verstehe nicht, was Sie Ihre URL und Ansichten Dateien aufgerufen haben. Werden sie wirklich beide test.py genannt, in Verzeichnissen namens URLs und Views? Wenn ja warum? –

+0

ja, beide aufgerufen test.py, in Verzeichnissen namens URLs und Ansichten. Mein Plan ist, eine große App zu erstellen und innerhalb dieser verschiedenen Apps, die von Links wie Webmaster aufgerufen werden. Wird __init__.py mir dabei helfen? – ashutosh

+0

Nun, nicht. Verschieben Sie diese Dateien in das App-Verzeichnis und nennen Sie sie, was sie sind, urls.py und views.py. –

Antwort

0

Da Sie versuchen, es wie ein Modul Versuch zu machen zu arbeiten Hinzufügen __init__.py in beiden URL und Ansichten Ordner mit folgendem Inhalt

from .test import * 

Um es weiter in Bezug auf Ihre Frage zu erklären __init__.py wird in die DjangoProject/DjangoProject/app/urls/ und DjangoProject/DjangoProject/app/views/ platziert werden.

Um ROOT_URLCONF = 'DjangoProject.app.urls' zu verwenden, müssen Sie auch alles in die Datei __init__.py importieren.

Für den Anwendungsfall des Importierens von Ansichten wie hier zu sehen.

from django.conf.urls import patterns, url 
urlpatterns = patterns('DjangoProject.app.views.test',   
    url(r'^/create/$','first_view',name='first_view'), 
) 

Sie müssen nicht einmal etwas in der __init__.py der Ansichten importieren.

+0

http://pythoncentral.io/package-python-django-application-reusable-component/ ODER https://110j.wordpress.com/2009/06/17/organize-django-applications/ – ashutosh

+0

die beiden obigen sind Link ich fand. Ich möchte Modul (Ordner) für Ansichten und URLs für eine wichtige App erstellen. Ich habe verstanden, dass __init__.py mir dabei helfen wird, aber ich weiß nicht wie? wirst du mir das erklären? und ist auch meine ROOT_URLCONF in settings.py und url in DjangoProject/urls.py ist richtig? – ashutosh

+0

Die '__init __. Py' Datei wird in jeden Ordner, den Sie als Modul verwenden möchten, gehen. In diesem Fall wird es in "DjangoProject/DjangoProject/app/urls/__ init __. Py" und ähnlich für den Ordner views gehen. müssen Sie auch Dinge in die '__init __. Py' importieren, auf die Sie auf Modulebene zugreifen möchten. – pyvkd

0

Die Idee von django Architektur ist eine Datei für URLs und Ansichten für jede App zu haben. Denken Sie daran, dass urls.py alle URLs aus der App speichert, wenn Sie es erweitern möchten, erstellen Sie eine andere App. Ich schlage vor, diesen Ordner mit tests.py zu entfernen und die Datei direkt in Ihrem DjangoApp-Ordner zu strukturieren.

Auch, wie der Kommentar oben richtig sagt, sollten Sie eine Datei namens __init__.py erstellen, um Python einen Ordner wie ein Modul behandeln, überprüfen Sie What is __init__.py for?.

0

Ihre Anwendungsdateistruktur und Ihre Konfiguration hat Probleme. lesen Sie dies: https://docs.djangoproject.com/en/1.11/intro/tutorial01/

zum Beispiel: Sie sollten Ihre Funktion im Blick zuweisen.py seiner url so in dieser Zeile:

url(r'^/create/$','first_view',name='first_view'), 

Änderung es zu:

url(r'^/create/$', views.first_view, name='first_view'),