Полагаю, у меня есть кое-что, чтобы внести вклад в этот вопрос.
Что было для меня странным, так это то, что мой код имел смысл с точки зрения того, как я его использовал, но он не будет работать.
Если в своих URL я попробовал следующее. Где helloworld - мое имя в приложении Django.
import helloworld
...
url(r'^test', helloworld.views.home1() , name='home'),
Выдает ошибку. Хотя технически все правильно. Я импортировал свое приложение, представляющее собой модуль Python, автоматически созданный django manage startapp
module' object has no attribute 'views'
Я нашел исходный код для сайта проекта django на github и посмотрел, как они делают свой импорт, в разделе URL-адресов своего приложения. Иди и взгляни на этот проект на github. Это отличная ссылка для реализации крупномасштабного проекта. Там есть чему поучиться.
https://github.com/django/djangoproject.com.
Вот как они делают свой импорт и настройку URL.
from accounts import views as account_views
...
url(r'^~(?P<username>[\w-]+)/$', account_views.user_profile, name='user_profile'),
Итак, я изменил свой код на что-то похожее
import helloworld.views as helloView
...
url(r'^test', helloView.home1 , name='home'),
Скорее всего, это связано с пространствами имен app / project / python. Я не совсем уверен. Но мой код работает, как и ожидалось, и у меня все еще могут быть разные приложения в соответствующих им пространствах имен. Мне просто нужно убедиться, что import app.view as somename
уникален в схеме пространства имен app / project / python.