Представления и модели как пакет Python не могут быть разрешены - PullRequest
0 голосов
/ 28 июля 2011

Я довольно новичок в Django, и я пытаюсь освоить использование модулей для видов и моделей.Как ни странно, URls работают нормально.

  • Моя структура приложения

    templatetags/
    urls/
    views/
    models.py
    tests.py
    
  • В директории views есть __init__.py, иanimals.py, содержащий одно представление.

    from myapp.models import Animal
    from django.shortcuts import render_to_response
    
    def overview(request):
        objects = Animal.objects.all()
        return render_to_response('myapp/animal_list.html', {'objects': objects})
    
  • В URL-адресе / содержится файл animal.py, содержащий

    from myapp.views.animals import *
    urlpatterns = patterns('',
        url(r'^$', 'views.animals.overview', {}, 'myapp_animal_overview'),
    )
    

Результат: Поймал ViewDoesNotExist при рендеринге: Не удалосьимпорт просмотров. животных.Ошибка была: нет модуля с именем животных

Но он есть!Кто-нибудь может увидеть, где я здесь не так?Мое приложение состоит из около 10 моделей, отсюда и необходимость разделения.Заранее большое спасибо.

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Ну, как правило, вам не нужно импортировать myapp.views.animals.Диспетчер URL-адресов импортирует требуемое представление по мере необходимости, когда регулярное выражение совпадает с запрошенным URL-адресом, согласно: https://docs.djangoproject.com/en/dev/topics/http/urls/#how-django-processes-a-request.

Вообще говоря, я ожидаю, что ваш urls.py будет выглядеть примерно так:

from django.conf import settings
from django.conf.urls.defaults import patterns, include, url # for example ...

urlpatterns = patterns('',
    url(r'^$', 'views.animals.overview'),
)
0 голосов
/ 29 июля 2011

Вы были правы, мне не нужен был этот дополнительный импорт.

Что сработало, было

    urlpatterns = patterns('',
        url(r'^$', 'myapp.views.animals.overview'),
    )

Мне нужно было указать приложение, где были представления. Проблема решена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...