为什么django书中第一个“你好世界”的例子不起作用?

时间:2013-09-09 19:34:51

标签: python regex django django-urls

我正在尝试通过遵循Django书来学习Django for python 2.7,但在尝试配置views.py和urls.py时仍然坚持使用hello world示例。我基本上逐行复制了所有内容,但在访问本地测试服务器时仍然遇到相同的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:

    ^hello/$

The current URL, , didn't match any of these.

我在views.py中的代码如下所示:

from django.http import HttpResponse

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

和urls.py:

from django.conf.urls import patterns, include, url
from mysite.views import hello

urlpatterns = patterns('',
                       url('^hello/$', hello)
                       )

当我只在url()函数中使用“^ $”作为第一个正则表达式参数时,它可以工作。但每当我尝试将它与正则表达式匹配时,就像上面那个,它应该匹配hello()中的HttpResponse,它永远不会起作用。我已经尝试过无数种你好的变种而没有成功。我还可以补充一点,我已经在Linux和Windows上尝试过了。什么可能是这个问题的根源?

2 个答案:

答案 0 :(得分:4)

404的原因是http://127.0.0.1:8000/中的urlpatterns页面没有匹配的正则表达式:

urlpatterns = patterns('',
                       url('^hello/$', hello)
                       )

^hello/$正则表达式仅匹配http://127.0.0.1:8000/hello/网址。

答案 1 :(得分:3)

您正在为/hello定义一个网址,但实际上您并没有访问该网址,而是访问/。您需要在浏览器的地址栏中实际使用“hello”。