2017-08-09 70 views
0

我使用Python的this教程,但看起來像筆者一直沒有更新,因爲該代碼使用過時的Python代碼,具體如下:Python中找不到網址

from django.conf.urls import patterns 

    urlpatterns = patterns('', 
     (r'^hello-world/$', index), 
    ) 

我擡頭Django文檔和其他StackOverflow的問題但我無法解決我如何使用當前的方法。這是我加入什麼來代替上述:

urlpatterns = [ 
    url(r'^hello-world$', hello), 
] 

這裏是全hello.py文件:

import sys 

from django.conf import settings 
from django.conf.urls import url 
from django.http import HttpResponse 
from django.core.management import execute_from_command_line 

settings.configure(
    DEBUG=True, 
    SECRET_KEY='thisisabadkeybutitwilldo', 
    ROOT_URLCONF=sys.modules[__name__], 
) 

def index(request): 
    return HttpResponse('Hello, World') 

import views 

urlpatterns = [ 
    url(r'^hello-world$', hello), 
] 

if __name__ == "__main__": 
    execute_from_command_line(sys.argv) 

這是錯誤信息,我從Python中得到:

Django使用主要中定義的URLconf,按以下順序嘗試這些URL 模式:^ $ [name ='hello']當前URL,你好, 確實不匹配任何這些。

我在做什麼錯?

+0

您所提供的代碼不會在所有的工作,絕對不會引發該錯誤。當我做出任何必要的更改時,它可以正常工作 –

回答

1

您提供的代碼不起作用。我測試了鏈接教程中的代碼,它在1.8中正常工作。您的代碼有一個隨機導入(import views)和一個未定義的變量(hello)。所以,我提出的邏輯編輯您的代碼和測試,它是罰款1.11:

import sys 

from django.conf import settings 
from django.conf.urls import url 
from django.http import HttpResponse 
from django.core.management import execute_from_command_line 

settings.configure(
    DEBUG=True, 
    SECRET_KEY='thisisabadkeybutitwilldo', 
    ROOT_URLCONF=sys.modules[__name__], 
) 

def index(request): 
    return HttpResponse('Hello, World') 

urlpatterns = [ 
    url(r'^hello-world$', index), 
] 

if __name__ == "__main__": 
    execute_from_command_line(sys.argv) 
+0

謝謝!看起來我只需要在這一行上使用'index'而不是'hello':url(r'^ hello-world $',hello), –

+1

沒問題。是的,我認爲這是一個理想的名字,但改爲「索引」,因爲這是我看到的第一個。 –