(urls.W005) URL命名空间“LnkIn”不是唯一的。

22

嗨,当我执行迁移或使用python manage.py runserver命令时,出现了以下错误。

(urls.W005) URL namespace 'LnkIn' isn't unique.You may not be able to reverse all URLs in this namespace. 

这是我在我的应用程序目录(LnkIn)中的urls.py文件。

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

app_name = 'LnkdIn'

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^register/$', views.register, name='register'),
    url(r'^login_user/$', views.login_user, name='login_user'),
    url(r'^logout_user/$', views.logout_user, name='logout_user'),
    url(r'^(?P<user_id>[0-9]+)/$', views.profile, name='profile'),
    url(r'^(?P<song_id>[0-9]+)/favorite/$', views.favorite, name='favorite'),
    url(r'^trabajos/$', views.trabajos, name='trabajos'),
    url(r'^crear_oferta/$', views.crear_oferta, name='crear_oferta'),
    url(r'^(?P<user_id>[0-9]+)/create_trabajo/$', views.create_trabajo, name='create_trabajo'),
    url(r'^(?P<user_id>[0-9]+)/crear_amistad/$', views.crear_amistad, name='crear_amistad'),
    url(r'^(?P<user_id>[0-9]+)/delete_trabajo/(?P<trabajo_id>[0-9]+)/$', views.delete_trabajo, name='delete_trabajo'),
    url(r'^(?P<album_id>[0-9]+)/favorite_album/$', views.favorite_album, name='favorite_album'),
    url(r'^(?P<album_id>[0-9]+)/delete_album/$', views.delete_album, name='delete_album'),
]

以下是我在主目录下的urls.py文件。

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^LnkdIn/', include('LnkdIn.urls')),
    url(r'^', include('LnkdIn.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

我真的不知道我错在哪里了。我检查过我的视图和模板,一切似乎都很好,我的URL也没有错别字。我已经搜索过,但没有找到这个错误,我看到了类似的错误,它们建议检查URL是否有错误。

我正在使用Python 2.7和Django 1.10。


4
您在两次包含“LnkdIn.urls”。虽然这在一个方向上可以正常工作,但无法反转,因为会有两个结果。基于反向映射器的所有函数都无法按预期工作。 - Klaus D.
1个回答

32

您的应用程序 urlpatterns 两次导入了 LnkdIn.urls

您应该只导入一次,因此请从以下部分中选择一个。

url(r'^LnkdIn/', include('LnkdIn.urls')),
或者
url(r'^', include('LnkdIn.urls')),

有没有一种简洁的方法可以让一个应用程序的urls.py解析多个路径?如果我想要'MyApp/int:MyApp_id'和r'^'都使用MyApp的urls.py进行解析,该怎么办? - Michael Hoffmann
1
@MichaelHoffmann 我建议在主要的urlpatterns中使用基本路由(r'^'),并将您想要在应用程序urlpatterns中的任何URL前缀添加'^LnkdIn/'。如果您正在尝试将多个URL路由到相同的端点,无论是否带有“LnkdIn”段,我会不建议这样做,因为它会使您的应用程序端点变得过于复杂。 - orangecaterpillar
当使用ImageField时,此解决方案无法正常工作,图像无法加载。 - Mr Coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接