2010-04-29 21 views
4

我是一名需要帮助的Django新手:尽管我在urls.py中更改了一些url,但我仍然从Django获取相同的错误消息。这里是我的settings.py相关线路:Django缓存url正则表达式模式吗?

ROOT_URLCONF = 'mydjango.urls' 

这里是我的urls.py:

from django.conf.urls.defaults import * 

# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    # Example: 
    # (r'^mydjango/', include('mydjango.foo.urls')), 

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation: 
    #(r'^admin/doc/', include(django.contrib.admindocs.urls)), 

    # (r'^polls/', include('mydjango.polls.urls')), 
    (r'^$', 'mydjango.polls.views.homepage'), 
    (r'^polls/$', 'mydjango.polls.views.index'), 
    (r'^polls/(?P<poll_id>\d+)/$', 'mydjango.polls.views.detail'), 
    (r'^polls/(?P<poll_id>\d+)/results/$', 'mydjango.polls.views.results'), 
    (r'^polls/(?P<poll_id>\d+)/vote/$', 'mydjango.polls.views.vote'), 
    (r'^polls/randomTest1/', 'mydjango.polls.views.randomTest1'), 
    (r'^admin/', include(admin.site.urls)), 
) 

因此,我希望,每当我参观http://mydjango.yafz.org/polls/randomTest1/的mydjango.polls.views.randomTest1函数应因为在我的民意测验运行/ views.py我有相关的功能:

def randomTest1(request): 
    # mainText = request.POST['mainText'] 
    return HttpResponse("Default random test") 

但是我一直收到以下错误信息:

Page not found (404) 
Request Method:  GET 
Request URL: http://mydjango.yafz.org/polls/randomTest1 

Using the URLconf defined in mydjango.urls, Django tried these URL patterns, in this order: 

    1. ^$ 
    2. ^polls/$ 
    3. ^polls/(?P<poll_id>\d+)/$ 
    4. ^polls/(?P<poll_id>\d+)/results/$ 
    5. ^polls/(?P<poll_id>\d+)/vote/$ 
    6. ^admin/ 
    7. ^polls/randomTest/$ 

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

我很惊讶,因为我一再检查urls.py并没有

^polls/randomTest/$ 
在它

,但

^polls/randomTest1/' 

这似乎是Django的是某种存储之前的urls.py内容和我不知道如何使我的最新更改生效。

任何想法?当我尝试加载该页面时,为什么我会继续看到一些旧版本的正则表达式,即使我更改了我的urls.py?

+0

自从进行更改后,您是否重新启动了服务器(开发或Apache)? – 2010-04-29 12:58:42

+0

我已经重新启动它并且Django开始按照我的预期工作。这是正常工作流程吗?我的意思是每当我对urls.py进行更改时,是否应该重新启动服务器?是不是有一个更好,更不讨厌的方式? – 2010-04-29 13:05:12

+0

不只是urls.py - 只要任何Django代码(非模板)发生更改,您都需要重新启动。但是,开发服务器应该自动重启。 – 2010-04-29 13:56:31

回答

7

由于性能原因,Django在启动时编译URL正则表达式 - 重新启动服务器,您应该看到新URL可以正常工作。

+1

我已经重新启动它,Django开始按我的预期工作。这是正常工作流程吗?我的意思是每当我对urls.py进行更改时,是否应该重新启动服务器?是不是有一个更好,更不讨厌的方式? – 2010-04-29 13:06:15

+0

是的,使用开发服务器比较好。 – fastmultiplication 2010-10-06 16:55:36

+1

有什么方法可以在不重新启动服务器的情况下以编程方式“刷新”缓存的URL模式? – 2011-04-14 03:31:55