Python URLconf无法使用类似的URL

Python URLconf无法使用类似的URL,python,django,Python,Django,这是我的URLconf: urlpatterns = patterns('', url(r'^new_player/$', new_player, name="new_player"), url(r'^new_player/player_added/$', player_added, name="player_added"), url(r'^(\d+)/new_avatar/$', new_avatar, name='new_avatar' ), url(r'^(

这是我的URLconf:

urlpatterns = patterns('',
    url(r'^new_player/$', new_player, name="new_player"),
    url(r'^new_player/player_added/$', player_added, name="player_added"),
    url(r'^(\d+)/new_avatar/$', new_avatar, name='new_avatar' ),
    url(r'^(?P<user_name>[-\w]+)/new_game/$', new_game, name='new_game' ),
    url(r'^$', 'django.views.generic.list_detail.object_list', { 'queryset': Player.objects.all(),'extra_context': {'players' : Player.objects.annotate(total_amount_won=Sum('avatar__games__profit'))}}, 'stakeme_player_list'),
    url(r'^(?P<real_name>[\w|\W]+)/', usernames_by_player),
    url(r'^(?P<user_name>[\w|\W]+)/', avatars_by_username),
)
urlpatterns=patterns(“”,
url(r“^new\u player/$”,new\u player,name=“new\u player”),
url(r“^new\u player/player\u added/$”,player\u added,name=“player\u added”),
url(r'^(\d+)/new_avatar/$',new_avatar,name='new_avatar'),
url(r'^(?P[-\w]+)/new_game/$',new_game,name='new_game'),
url(r“^$”,“django.views.generic.list_detail.object_list”,{“queryset”:Player.objects.all(),“extra_context”:{“Player”:Player.objects.annotate(total_amount_won=Sum('avatar_games_price'))},“stakeme_Player_list”),
url(r'^(?P[\w |\w]+)/',用户名由玩家命名),
url(r'^(?P[\w |\w]+)/',按用户名显示化身),
)
如上所述,
url(r'^(?p[\w\w]+)/,用户名由玩家提供),
将显示其相关模板,但
url(r'^(?p[\w\w]+)/,化身由用户名提供),
将显示404

如果我颠倒最后两个URL的顺序,404将按玩家显示用户名,而不是按用户名显示化身


我知道,由于类似的URL模式,这可能会导致问题,但有人能解释一下原因和解决方法吗?

这些URL是按照您定义的顺序查找的。因此,这一行
url(r'^(?P[\w|\w]+)/',用户名由玩家提供)
获取来自请求url的所有输入。您应该区分以下URL:

url(r'^realname/(?P<real_name>[\w|\W]+)/', usernames_by_player),
url(r'^username/(?P<user_name>[\w|\W]+)/', avatars_by_username),
url(r'^realname/(?P[\w |\w]+)/,用户名由玩家提供),
url(r'^username/(?P[\w |\w]+)/',按用户名显示的化身),

希望这条路能走到正确的方向。

这确实有帮助,而且实际上是我要走的方向。但是,有没有办法保持原始格式?理想情况下,我希望我的URL与OP中的URL相同。例如,如果我的用户名是Dan123,我的真实姓名是Daniel,我希望/project/Daniel/通过玩家将我指向我的
用户名,并/project/Dan123/通过用户名将我指向
化身。我理解这会假设没有真实姓名和用户名是一样的-所以假设这是真的,有办法做到吗?不管怎样,我会接受你的答案,因为我不认为我可以假设用户名永远不会和真实姓名一样理论上,是的,有一种方法,只需通过url将名称传递到您的视图,并尝试获取用户名,如果失败,请查找realname.Ok。我越想它,它就越像是坏习惯。谢谢你的回答!