Django 德扬戈。为什么这些URL冲突?

Django 德扬戈。为什么这些URL冲突?,django,django-urls,Django,Django Urls,我想知道为什么这些URL相互冲突 URL.py: url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"), url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"), url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_

我想知道为什么这些URL相互冲突

URL.py:

url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"),

url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"),
url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_libro_ajax"),
url(r'^editar\u perfil/$,views.editar\u perfil,name=“editar\u perfil”),
url(r'^(?P[-\w.]+)/$”,views.perfil_usuario,name=“perfil_usuario”),
url(r'^leyendo_libro_ajax/$,views.leyendo_libro_ajax,name=“leyendo_libro_ajax”),

因此,如果我这样放置url,我就无法访问名为
leyendo\u libro\u ajax
的url,它将访问名为
perfil\u usuario
的url。但是如果我尝试转到url
editar\u perfil
(第一个),它会正确地登录到
editar\u perfil
视图。为什么?如果这不是错误,请帮助我理解。

Django按照定义的顺序尝试每个模式,并返回url与正则表达式匹配的第一个视图。最后一个视图的url,
/leyendo\u libro\u ajax/
,也与
perfil\u usuario
视图的正则表达式相匹配。因为这是第一次匹配,这就是Django使用的视图

要使这些视图共存,需要将最后一个视图向上移动到第二个视图的上方:

url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"),
url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_libro_ajax"),
url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"),
url(r'^editar\u perfil/$,views.editar\u perfil,name=“editar\u perfil”),
url(r'^leyendo_libro_ajax/$,views.leyendo_libro_ajax,name=“leyendo_libro_ajax”),
url(r'^(?P[-\w.]+)/$”,views.perfil_usuario,name=“perfil_usuario”),

这样,
editar\u perfil
leyendo\u libro\u ajax
将始终是各自url的第一个匹配项,但任何其他url仍将与
perfil\u usuario
的正则表达式匹配

Django按照定义的顺序尝试每个模式,并返回url与正则表达式匹配的第一个视图。最后一个视图的url,
/leyendo\u libro\u ajax/
,也与
perfil\u usuario
视图的正则表达式相匹配。因为这是第一次匹配,这就是Django使用的视图

要使这些视图共存,需要将最后一个视图向上移动到第二个视图的上方:

url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"),
url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_libro_ajax"),
url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"),
url(r'^editar\u perfil/$,views.editar\u perfil,name=“editar\u perfil”),
url(r'^leyendo_libro_ajax/$,views.leyendo_libro_ajax,name=“leyendo_libro_ajax”),
url(r'^(?P[-\w.]+)/$”,views.perfil_usuario,name=“perfil_usuario”),

这样,
editar\u perfil
leyendo\u libro\u ajax
将始终是各自url的第一个匹配项,但任何其他url仍将与
perfil\u usuario
的正则表达式匹配

Django按照定义的顺序尝试每个模式,并返回url与正则表达式匹配的第一个视图。最后一个视图的url,
/leyendo\u libro\u ajax/
,也与
perfil\u usuario
视图的正则表达式相匹配。因为这是第一次匹配,这就是Django使用的视图

要使这些视图共存,需要将最后一个视图向上移动到第二个视图的上方:

url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"),
url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_libro_ajax"),
url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"),
url(r'^editar\u perfil/$,views.editar\u perfil,name=“editar\u perfil”),
url(r'^leyendo_libro_ajax/$,views.leyendo_libro_ajax,name=“leyendo_libro_ajax”),
url(r'^(?P[-\w.]+)/$”,views.perfil_usuario,name=“perfil_usuario”),

这样,
editar\u perfil
leyendo\u libro\u ajax
将始终是各自url的第一个匹配项,但任何其他url仍将与
perfil\u usuario
的正则表达式匹配

Django按照定义的顺序尝试每个模式,并返回url与正则表达式匹配的第一个视图。最后一个视图的url,
/leyendo\u libro\u ajax/
,也与
perfil\u usuario
视图的正则表达式相匹配。因为这是第一次匹配,这就是Django使用的视图

要使这些视图共存,需要将最后一个视图向上移动到第二个视图的上方:

url(r'^editar_perfil/$', views.editar_perfil, name="editar_perfil"),
url(r'^leyendo_libro_ajax/$', views.leyendo_libro_ajax, name="leyendo_libro_ajax"),
url(r'^(?P<username>[-\w.]+)/$', views.perfil_usuario, name="perfil_usuario"),
url(r'^editar\u perfil/$,views.editar\u perfil,name=“editar\u perfil”),
url(r'^leyendo_libro_ajax/$,views.leyendo_libro_ajax,name=“leyendo_libro_ajax”),
url(r'^(?P[-\w.]+)/$”,views.perfil_usuario,name=“perfil_usuario”),

这样,
editar\u perfil
leyendo\u libro\u ajax
将始终是各自url的第一个匹配项,但任何其他url仍将与
perfil\u usuario
的正则表达式匹配

您需要向我们展示如何在模板中编写url。我认为,如果您将perfil_usuario url传递到下面的leyendo_libro_ajax,它应该可以工作。knbk的答案是正确的。然而,另一方面,
-\w,
仅仅相当于一个
-如果你想匹配正则表达式中的点,你必须这样逃避:
-\w\。
你需要向我们展示你如何在模板中编码url。我想,如果你把perfil\u usuario url传递到leyendo\u libro\u ajax下面,这应该行得通。克恩贝克的答案是正确的。然而,另一方面,
-\w,
仅仅相当于一个
-如果你想匹配正则表达式中的点,你必须这样逃避:
-\w\。
你需要向我们展示你如何在模板中编码url。我想,如果你把perfil\u usuario url传递到leyendo\u libro\u ajax下面,这应该行得通。克恩贝克的答案是正确的。然而,另一方面,
-\w,
仅仅相当于一个
-如果你想匹配正则表达式中的点,你必须这样逃避:
-\w\。
你需要向我们展示你如何在模板中编码url。我想,如果你把perfil\u usuario url传递到leyendo\u libro\u ajax下面,这应该行得通。克恩贝克的答案是正确的。但是,另一方面,
-\w,
仅相当于一个
-如果你想匹配正则表达式中的点,你必须这样逃避:
-\w\。
谢谢你的答案。谢谢你的答案。谢谢你的答案。谢谢你的答案。谢谢你的答案。