这是Django教程或包问题的问题,还是我?

时间:2010-09-03 13:37:47

标签: python django packages

我正在使用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'

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 个答案:

答案 0 :(得分:1)

我不确定你的实际问题是什么。

您已经请求了根页\,但只定义了\hello\的网址,因此很明显Django找不到您要求的内容。如果您希望hello视图与网站根目录匹配,请执行以下操作:

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

我不明白有关from mysite.views import hello的问题。如果mysite的父级位于Python路径上,这将起作用。

答案 1 :(得分:1)

你看到404错误,因为你没有默认的处理程序,添加到这样的url模式:

('^$', views.default )

并且您可能需要将Web应用程序路径添加到sys.path变量以便能够“看到”您的模块:

import sys
sys.path.append(path_to_site)