Django - 从单独的应用程序导入视图 [英] Django - Import views from separate apps

查看:104
本文介绍了Django - 从单独的应用程序导入视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Django的新手,并且通过Holovaty和Kaplan-Moss的Django Book进行工作。我有一个名为mysite的项目,其中包含两个名为书和联系的应用程序。每个都有自己的view.py文件。在我的urls.py文件中,我有以下内容:

 从图书导入视图
从联系人导入视图
...
urlpatterns = patterns('',
...
(r'^ search / $',views.search),
(r'^ contact / $',views.contact),
...

当我运行我的代码获取此错误:



/ search /
...中的NameError
异常值:'module'对象没有属性'search' p>

我认为发生的是,由于联系人的意见最后导入,Django正在查看不包含搜索的联系人视图(搜索在书籍视图中) p>

从Django urls文件中的两个不同的应用程序导入views.py文件的正确方法是什么?



感谢您的帮助!

解决方案

免责声明:不是Django答案



问题出在这两行:

 从图书导入视图
从联系人导入视图

第二个导入是阴影第一个,所以当你使用视图后,你只使用视图联系



一个解决方案可能只是:

 code> import books 
import contact

urlpatterns = patterns('',
...
(r'^ search / $',books。 view.search),
(r'^ contact / $',contact.views.contact),
...

我不确定,但我也认为你实际上不需要导入任何东西,只能在你的模式中使用字符串,如:






另一个可能是遵循西蒙Visser 建议:

  from books.views导入搜索
from contact.views import contact


I'm new to Django and working my way through "The Django Book" by Holovaty and Kaplan-Moss. I have a project called "mysite" that contains two applications called "books" and "contact." Each has its own view.py file. In my urls.py file I have the following:

from books import views
from contact import views
...
urlpatterns = patterns('',
...
(r'^search/$', views.search),
(r'^contact/$', views.contact),
...

When I run my code I get this error:

NameError at /search/ ... Exception value: 'module' object has no attribute 'search'

What I believe is happening is that since views from contact was imported last, Django is looking at contact's view which does not contain search (search is in books' view).

What is the proper way to import the views.py file from two distinct applications within a Django urls file?

Thanks for your help!

解决方案

Disclaimer: Not a Django answer

The problem is with these two lines:

from books import views
from contact import views

The second import is shadowing the first one, so when you use views later you're only using the views from contact.

One solution might be to just:

import books
import contact

urlpatterns = patterns('',
...
(r'^search/$', books.views.search),
(r'^contact/$', contact.views.contact),
...

I'm not sure, but I also think that you don't actually need to import anything and can just use strings in your pattern, something like: 'books.views.search'.


Another possiblity is to follow Simon Visser suggestion:

from books.views import search
from contact.views import contact

这篇关于Django - 从单独的应用程序导入视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆