【问题标题】:Does Django cache url regex patterns somehow?Django 是否以某种方式缓存 url 正则表达式模式?
【发布时间】:2011-02-13 19:25:48
【问题描述】:

我是一个需要帮助的 Django 新手:即使我更改了 urls.py 中的一些 url,我仍然从 Django 收到相同的错误消息。这是我的 settings.py 中的相关行:

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 函数应该运行,因为在我的 polls/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,当我尝试加载该页面时,我仍然看到一些旧版本的正则表达式?

【问题讨论】:

  • 在进行更改后,您是否重新启动了服务器(开发或 Apache)?
  • 我现在重新启动了它,Django 开始按预期工作。这是正常的工作流程吗?我的意思是每次更改 urls.py 时都应该重新启动服务器吗?难道没有更好更不烦人的方法吗?
  • 不仅仅是 urls.py - 每当任何 Django 代码(不是模板)发生更改时,您都需要重新启动。不过,开发服务器应该会自动重启。

标签: python django django-urls


【解决方案1】:

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

【讨论】:

  • 我现在重新启动了它,Django 开始按预期工作。这是正常的工作流程吗?我的意思是每次更改 urls.py 时都应该重新启动服务器吗?难道没有更好更不烦人的方法吗?
  • 有没有办法在不重新启动服务器的情况下以编程方式“刷新”缓存的 URL 模式?
猜你喜欢
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 2011-03-22
  • 2013-07-26
  • 2014-07-08
  • 1970-01-01
相关资源
最近更新 更多