当urls.py引用任何其他应用

时间:2016-11-03 03:19:27

标签: django amazon-ec2 django-urls django-authentication

这似乎是我对django中url配置如何工作的误解。我认为匹配的第一个正则表达式是“调度”的地方,但是如果我在网址列表中有其他人,则会转到他们而不是第一个。

管理网站可访问时项目urls.py的内容:

from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings


    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        #url(r'^api/', include('api.urls')),
        #url(r'^index', include('limbo.urls')),
        #url(r'^polls/', include('polls.urls')),
        # url(r'^limbo/', include('limbo.urls')),
        #url(r'edit/', include('limbo.urls')),
    ]  + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

但是当我取消评论第1,第2或最后一条评论输出行时,我收到错误:

invalid literal for int() with base 10: ''

有什么想法吗?

例如,如果我取消评论url(r'^api/', include('api.urls')),的行,我会收到我说的错误 api/urls.py内容:

from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static
from . import views

urlpatterns = [
    url(r'^(?:addUse\.?[html]{,4})?$', views.addUsageHistory, name='addUsageHistory'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

和 在回溯中,我可以看到它似乎源于此文件: /home/ec2-user/limbo/limboenv/local/lib/python2.7/site-packages/django/contrib/admin/templates/admin/login.html 并且在堆栈跟踪中向下(从底部开始),我可以看到/home/ec2-user/limbo/limboenv/local/lib/python2.7/site-packages/django/utils/regex_helper.py中的变量pattern设置为'(?:addUse\\.?[html]{,4})?$,这是api/urls.py中的一个值}。为什么它最终会在api / urls.py中结束?它应该在看到r'^api/'

之前去过admin.site.urls

1 个答案:

答案 0 :(得分:0)

经常出现这样的情况,我把头撞到墙上这么长时间后想出来,然后我一发现问题,我就明白了。为了将来参考,在应用程序的?:中使用正则表达式开头使用urls.py是非常危险的。我改变了我的应用程序urls.py没有它,这一切都按预期工作。在这里看到我的udpated api/urls.py

from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static
from . import views

urlpatterns = [
    url(r'^addUse.html$', views.addUsageHistory, name='addUsageHistory'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)