Это проблема с руководством по Django или проблема с пакетом, или это я? - PullRequest
1 голос
/ 03 сентября 2010

Я использую Ubuntu 10, python 2.6.5

Я следую этому уроку: http://www.djangobook.com/en/2.0/chapter02
Я выполнил все шаги, используя вырезать и вставить.Следующая структура каталогов была создана автоматически:

bill@ed-desktop:~/projects$ ls -l mysite  
total 36  
-rw-r--r-- 1 bill bill     0 2010-09-01 08:18 __init__.py  
-rw-r--r-- 1 bill bill   546 2010-09-01 08:18 manage.py  
-rw-r--r-- 1 bill bill 20451 2010-09-01 18:50 mysite.wpr  
-rw-r--r-- 1 bill bill  3291 2010-09-01 08:18 settings.py  
-rw-r--r-- 1 bill bill   127 2010-09-01 11:13 urls.py  
-rw-r--r-- 1 bill bill    97 2010-09-01 08:20 views.py  

urls.py

from django.conf.urls.defaults import *
import sys
print sys.path

from mysite.views import hello
urlpatterns = patterns('',
    (r'^hello/$', hello),
)

pylint выдает эту ошибку: Невозможно импортировать представления 'mysite.views'

.py

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")


bill@ed-desktop:~/projects/mysite$ python manage.py runserver 

Validating models...
0 errors found

Django version 1.2.1, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Что привело к:

Page not found (404)
Request Method:  GET
Request URL:  http://127.0.0.1:8000/

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
   1. ^hello/$ 
The current URL, , didn't match any of these. 

Почему view.py, который находится в главном каталоге, содержит следующее?

from mysite.views import hello

Нетподкаталог 'views'.Хотя я знаком с использованием пакетов, мне никогда не приходилось создавать свои собственные, поэтому я немного запутался.Я бы подумал, что from views import hello будет правильным.

Пошаговое руководство выглядит прямо, и я не видел, чтобы кто-нибудь еще сталкивался с этой проблемой, поэтому я немного озадачен тем, что я 'мы сделали неправильно.

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

вы видите ошибку 404, потому что у вас нет обработчика по умолчанию, добавьте к шаблонам URL что-то вроде этого:

('^$', views.default )

и, возможно, вам нужно добавить путь к веб-приложению в sys.pathпеременная, чтобы иметь возможность «видеть» ваши модули:

import sys
sys.path.append(path_to_site)
1 голос
/ 03 сентября 2010

Я не уверен, каков твой вопрос.

Вы запросили корневую страницу, \, но определили только URL для \hello\, поэтому Django не может найти то, что вы запрашивали.Если вы хотите, чтобы ваше представление hello совпадало с корнем сайта, сделайте следующее:

urlpatterns = patterns('',
    (r'^$', hello),
)

Я не понимаю вопроса о from mysite.views import hello.Это будет работать, если родительский элемент mysite находится на пути Python.

...