2016-05-06 8 views
0

Я прочитал довольно много решений для подобных ответов. В большинстве случаев отсутствует импорт или кавычки. Кажется, я не вижу своей ошибки. Пожалуйста, порекомендуйте. Я получаю сообщение об ошибке my_app (exams) .urls, что экзамены не определены. «etaExams» - мой главный проект, а имя приложения - «экзамены».Django 1.9 имя приложения не определено

etaExams.urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = [ 
    url(r'^exams/', include('exams.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
] 

exams.urls.py

from django.conf.urls import include, url 
from . import views 

urlpatterns = [ 
    url(r'^$', exams.views.home, name='home'), 
] 

exams.views.py

from django.shortcuts import render 
from django.http import HttpResponse 
import datetime 

def home(request): 
    now = datetime.datetime.now() 
    html = "<html><body>It is now %s.</body></html>" % now 
    return HttpResponse(html) 

Мой файл настроек имеет 'экзамены' под установленные приложения , Приведенный выше код работает, если удалить «экзамены» в обоих urls.py файлов url(r'', include('exams.urls')), и

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
] 

В этом случае локальные проявления времени здесь http://localhost:56669/ вместо http://localhost:56669/exams

Последние вещи, которые странно в мой админ-сайт отсутствует раздел «Сайты».

Я добавляю макет файла из VisualStudio. Я удалил проект/init .py файл в соответствии с номером this сообщение. Это не имеет никакого значения. File listing

+0

В Django 1.9, 'django.contrib.sites' не включен в' INSTALLED_APPS' по умолчанию при запуске нового проекта. Если вам это нужно, вам нужно [включить его] (https://docs.djangoproject.com/en/1.9/ref/contrib/sites/#enabling-the-sites-framework). – Alasdair

+0

Ваш вопрос может быть более ясным, если вы покажете макет ваших файлов проекта. Вы получаете ошибки при запуске сервера, или это просто ошибки в Intelligence. – Alasdair

+0

Добавил мой список файлов из дерева решений VS в моем вопросе выше. Спасибо за ваши усилия. Сервер не запускается, он перестает говорить, что экзамены не определены. Единственный способ заставить его работать на данный момент - использовать относительный импорт с помощью url (r '^ $', views.home, name = 'home'), 'но должен быть способ добавить экзамены к URL-адресу , Кроме того, мой импорт для просмотров (экзамены и соответствующий параметр) дает предупреждение IntelliSense. – louisav

ответ

2

В exams/urls.py, Вы импортировали exams.views в views с относительным импортом:

from . import views 

Таким образом, вы должны использовать views, не exams.views в ваших шаблонах URL.

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
] 

Если вы затем включить ваш экзамен URLs с следующий включить в etaExams.urls.py, то вы должны получить макет URL вы хотите.

url(r'^exams/', include('exams.urls')), 

Вы должны быть в состоянии сделать import exams.views в exams/urls.py, а затем использовать exams.views.home в шаблоне URL. Вы говорите, что это не работает в комментариях, но я не понимаю, почему это не сработает. Я предпочитаю относительный импорт в import exams.views в любом случае.

+0

'import exams.views' ' urlpatterns = [ url (r '^ $', exams.views.home, name = 'home'), ] ']' ] ' Это еще говорит, что экзамены не определены. Также попробовал изменить его на« из экземпляров импорта » – louisav

+0

Я не уверен, почему это не работает для вас, но я рекомендую вам использовать' from. Import views' и 'url (r '^ $', views.home, name = 'home'),' anyway. – Alasdair

+0

Теперь у меня есть url (r '^ exams /', include ('exams.urls')), 'in' etaExams/urls.py', и у меня есть 'from. import views' в' exams/urls.py' вместе с 'url (r '^ $', views.home, name = 'home'), ' Запускает сервер с ошибкой 404. Это также включает исправление '_init_.py', упомянутое выше. Если я изменяю 'etaExams/urls.py' на' url (r '', include ('exams.urls')), 'он работает, но это не та структура, которую я хочу. Я хочу, чтобы он отображался в 'localhost .../exams' – louisav

1
from django.conf.urls import include, url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
] 
Смежные вопросы