【问题标题】:(urls.W005) URL namespace 'LnkIn' isn't unique.(urls.W005) URL 命名空间“LnkIn”不是唯一的。
【发布时间】:2017-09-28 12:32:07
【问题描述】:

您好,我在进行迁移或使用 python manage.py runserver 命令时遇到此错误。

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

这就是我将 urls.py 放在我的应用程序目录 (LnkIn) 中的方式。

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)

我真的不知道我做错了什么。我检查了我的视图和模板,一切似乎都很好,我的网址上似乎没有任何错字。我已经搜索但没有找到这个错误,我看起来很相似,他们建议检查网址中没有错误。

我正在使用 Python 2.7 和 Django 1.10。

【问题讨论】:

  • 您包含LnkdIn.urls 两次。虽然这在一个方向上效果很好,但它不能逆转,因为会有两个结果。所有基于反向映射器的函数都不会按预期工作。

标签: python django windows


【解决方案1】:

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

你应该只做一次,所以从下面的部分中选择一个

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

url(r'^', include('LnkdIn.urls')),

【讨论】:

  • 有没有一种干净的方法可以让一个应用的 urls.py 解析多个路径?如果我希望'MyApp/&lt;int:MyApp_id&gt;'r'^' 都使用MyApp 的urls.py 来解决怎么办?
  • @MichaelHoffmann 我建议在主 urlpatterns 中使用基本路由 (r'^'),并在应用程序 urlpatterns 中添加您想要的任何 URL 前缀 '^LnkdIn/'。如果您尝试使用或不使用“LnkdIn”段将多个 URL 路由到同一个端点,我会劝阻您,这会使您的应用程序的端点变得不必要地复杂化。
  • 此解决方案在使用 ImageField 图像未加载时不起作用
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2019-07-31
  • 2020-06-17
相关资源
最近更新 更多