Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django url路径中的2段塞_Django_Django Views - Fatal编程技术网

Django url路径中的2段塞

Django url路径中的2段塞,django,django-views,Django,Django Views,我想要像这样的网址 example.com/lol/tournament/tournament-slug/match/match-slug 我做到了,但是,像这样使用它是正确的方法吗?有更好的办法吗?代码:leagueoflegendsgame=游戏[0] views.py def lolmatch_detail(request, tournamentslug, lolslug): lolmatch=get_object_or_404(LeagueOfLegendsGame, lol_

我想要像这样的网址

example.com/lol/tournament/tournament-slug/match/match-slug
我做到了,但是,像这样使用它是正确的方法吗?有更好的办法吗?代码:
leagueoflegendsgame=游戏[0]

views.py

def lolmatch_detail(request, tournamentslug, lolslug):
    lolmatch=get_object_or_404(LeagueOfLegendsGame, lol_slug=lolslug)
    game=LeagueOfLegendsGame.objects.filter(lol_slug=lolslug)
    tournamentslug = get_object_or_404(Tournament, tournament_slug=tournamentslug, leagueoflegendsgame=game[0])
url.py

path('lol/tournament/<str:tournamentslug>/match/<str:lolslug>', lolmatch_detail, name='lol_match_detail'),

您可以在一个查询中匹配两个slug,如:

def lolmatch_detail(request, tournamentslug, lolslug):
    game = get_object_or_404(
        LeagueOfLegendsGame,
        lol_slug=lolslug,
        tournament__tournament_slug=tournamentslug
    )
    # ...

在这里,数据库将创建一个
JOIN
,用
lolslag
查找
LeagueOfLegendsGame
,并检查它是否指向一个带有给定
tourbank\u slug
tourbank
,如果存在,则返回这样的
tourbank
(tourbank,tourname\u slug=tourbank\u slug,leagueoflegends\uuulol\uslug=lolslaug)。我改为game=get\u object\u404(LeagueOfLegendsGame,tourbank\uu-tourbank\uu slug=tournamentslug,lol\u slug=lolslaug)(谢谢你的回答,它很管用)
def lolmatch_detail(request, tournamentslug, lolslug):
    game = get_object_or_404(
        LeagueOfLegendsGame,
        lol_slug=lolslug,
        tournament__tournament_slug=tournamentslug
    )
    # ...