2017-07-14 56 views
0

我創建了一個urlsviews文件夾,如templates,但它不起作用。 我得到錯誤: Exception Value: No module named urlsdjango-異常值:沒有模塊命名的網址

這裏是我的項目的樣子:

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文件:

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)), 
) 

應用程序/網址/ test.py:

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

應用/視圖/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

我不明白,你叫什麼您的網址和意見的文件。他們真的都稱爲test.py,內部目錄稱爲網址和視圖?如果是這樣,爲什 –

+0

是的,都叫做test.py,在名爲urls和views的目錄裏面。我的計劃是創建一個主要的應用程序,並在不同的應用程序中通過鏈接訪問,如網站管理員。 __init__.py會幫助我嗎? – ashutosh

+0

呃,不要。將這些文件移動到應用程序目錄中,並將它們稱爲urls.py和views.py。 –

回答

0

既然你想讓它像一個模塊嘗試在這兩個網址的加入__init__.py 工作,並查看文件夾下面的內容

from .test import * 

要在你的問題方面進一步解釋__init__.py會置於DjangoProject/DjangoProject/app/urls/DjangoProject/DjangoProject/app/views/

要使用ROOT_URLCONF = 'DjangoProject.app.urls'您必須將所有內容導入__init__.py文件中。

有關導入視圖的用例,請參見此處。

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

你甚至不用進口了意見__init__.py什麼。

+0

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

+0

以上兩者是鏈接我發現。我想爲一個主要應用程序的視圖和網址創建模塊(文件夾)。我明白,__init__.py會幫助我,但是,我不知道如何?你會向我詳細說明這一點嗎?也是我的ROOT_URLCONF在settings.py和DjangoProject/urls.py中的url是正確的? – ashutosh

+0

'__init __。py'文件將進入你想用作模塊的每個文件夾。所以在這種情況下,它將進入'DjangoProject/DjangoProject/app/urls/__ init __。py'和類似的視圖文件夾。 此外,您還必須將某些東西導入要在模塊級訪問的'__init __。py。 – pyvkd

0

從Django體系結構的想法是爲每個應用程序的URL和視圖有一個文件。請記住,urls.py存儲應用中的所有網址,如果您想擴展它,請嘗試創建另一個應用。我建議用tests.py刪除該文件夾,並將該文件直接構建到您的DjangoApp文件夾中。

此外,正如上面的評論所說的,python將文件夾視爲模塊,您應該創建一個名爲__init__.py的文件,檢出What is __init__.py for?

0

您的應用程序文件結構和配置有問題。 閱讀此:https://docs.djangoproject.com/en/1.11/intro/tutorial01/

例如: 您應該分配您的功能在視圖中。PY其URL,以便在這一行:

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

將其更改爲:

url(r'^/create/$', views.first_view, name='first_view'), 
相關問題