Django:导入顺序意味着只有一个views.py文件是可访问的

时间:2014-05-08 18:30:24

标签: python django django-forms django-views

我正在研究创建表单的DjangoBook Chapter7 tutorial

我的问题是我只能从views.pybooks目录导入一个contact文件。因此,我只能看到当时导入的任何views.py文件创建的页面。

我相信我需要在两个目录之间进行区分,以便Django不会混淆(由于我的可能性很差)。我还包括了我的项目目录的图像,这可能有助于理解问题。

联系导入工作

from mysite.views import hello, current_datetime, hours_ahead, display_meta
from contact import views
#from books import views

urlpatterns = patterns('',
    ...

    #url(r'^search-form/$', views.search_form),
    #url(r'^search/$', views.search),    

    url(r'^contact_form/$', views.contact), 
)

图书导入工作

from mysite.views import hello, current_datetime, hours_ahead, display_meta
#from contact import views
from books import views

urlpatterns = patterns('',
    ....

    url(r'^search-form/$', views.search_form),
    url(r'^search/$', views.search),    

   #url(r'^contact_form/$', views.contact), 
)

我的项目结构。我正在使用Pydev在Eclipse中工作。

enter image description here

实施的联系人和图书导入都会出现以下错误

AttributeError at /search/

'module' object has no attribute 'search_form'

任何帮助都一如既往地受到赞赏。

2 个答案:

答案 0 :(得分:3)

您可以使用as声明:

from contact import views as contact_views
from books import views as books_views

和通话视图:

url(r'^search-form/$', books_views.search_form),
url(r'^search/$', books_views.search),
url(r'^contact_form/$', contact_views.contact), 

答案 1 :(得分:1)

您应该将urls.py放在应用程序中,详见part 3 of the tutorial

应用程序目录中创建urls.py

contact
   - __init__.py
   - views.py
   - models.py
   - urls.py
books
   - __init__.py
   - views.py
   - models.py
   - urls.py

在book / urls.py中,添加以下内容:

from django.conf.urls import patterns, url

from .views import search, search_form

urlpatterns = patterns('',
    url(r'search-form/$', search_form, name='search_form'),
)

然后在您的主urls.py中添加以下内容:

url(r'^books/', include('book.urls')),

请浏览official tutorial,因为django图书网站已过时。