Django 不反映对 urls.py 的更改
Posted
技术标签:
【中文标题】Django 不反映对 urls.py 的更改【英文标题】:Django not reflecting changes to urls.py 【发布时间】:2014-11-26 11:11:01 【问题描述】:我正在为一个运行在 nginx 服务器上的 Django 站点设置登录系统。我得到以下调试 404 页面:
Using the URLconf defined in it.urls, Django tried these URL patterns, in this order:
^admin/
^login/ [name='main_login']
^$ [name='index']
^laptops/
^assets/
^mardes/
^users/
^jobs/
^static\/(?P<path>.*)$
The current URL, account/login/, didn't match any of these.
这似乎使用的是旧版本的 it.urls 文件;当前的看起来像这样:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls import patterns, include, url
from django.views.generic import TemplateView
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls) ),
url(r'^account/', include('account.urls', namespace='account'), name='account' ),
url(r'^laptops/', include('laptops.urls', namespace='laptops') ),
url(r'^assets/', include('assets.urls', namespace='assets') ),
url(r'^mardes/', include('mardes.urls', namespace='mardes') ),
url(r'^users/', include('users.urls', namespace='users') ),
url(r'^jobs/', include('jobs.urls', namespace='jobs') ),
url(r'^', TemplateView.as_view(template_name='it/index.html'), name='index' ),
) + staticfiles_urlpatterns()
如您所见,它没有 r'^login/' 模式。
我已在我的 settings.py 文件中将 LOGIN_URL 设置为“/account/login/”,但是 @login_required 装饰器正在加载“/login/”。当我在 @login_required 调用中指定 login_url='/account/login' 时,新的 url 也会被忽略。
我已经重新启动了 Nginx(通过启动和停止,以及运行“重新启动”),这并没有什么不同。我还在 nginx.conf 文件中设置了“sendfile=off”。我猜有缓存存储在某处(回复:How to clear the cache of nginx?)。
如果您需要更多详细信息,请告诉我。
【问题讨论】:
您是否尝试过删除所有pyc
文件? find . -name \*.pyc -type f -delete
@michaelb 是的,我确实尝试过,不幸的是没有改变
你是如何运行 django 服务器的?通过 uwsgi...?
@michaelb 是的,忘记了,谢谢
【参考方案1】:
Nginx 不单独运行 Django,但它应该与 uwsgi 或 gunicorn 等 wsgi 应用服务器交互。
也许你应该重新启动 wsgi 应用服务器而不是 nginx。
【讨论】:
【参考方案2】:很好的捕获@bcvery1。同样对于那些通过乘客运行 django 应用程序的人,重新启动 nginx 或重新创建 restart.txt 文件也应该可以看到这些更改。
【讨论】:
以上是关于Django 不反映对 urls.py 的更改的主要内容,如果未能解决你的问题,请参考以下文章
python+django 更改了urls.py 之后runserver报错的解决办法