Python Django |更改pk view参数会破坏视图

Python Django |更改pk view参数会破坏视图,python,django,Python,Django,我正在制作一个Django应用程序,每个用户都有一张卡片,由几个文本块组成 以下是我的模型: class Card(models.Model): owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="owner") class Tile(models.Model): card = models.ForeignKey( Card, on_delete=m

我正在制作一个Django应用程序,每个用户都有一张卡片,由几个文本块组成

以下是我的模型:

class Card(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="owner")


class Tile(models.Model):
    card = models.ForeignKey(
        Card, on_delete=models.CASCADE, related_name="card")
    content = models.TextField()
我想根据URL使用卡片/磁贴数据填充相同的HTML模板,因此我通过URL传递卡片的主键:

urlpatterns = [
    path('card<int:pk>/', views.card, name='card'),
]
但是,这并不起作用:

def card(request, card_pk):
    try:
        card = Card.objects.get(pk=card_pk)
        if card:
            context = {
                'title': 'Card',
                'tiles': Tile.objects.filter(card=card_pk)
            }
            return render(request, 'cards/card.html', context)
    except:
        return HttpResponseNotFound()
我得到以下错误:
card()得到一个意外的关键字参数“pk”


为什么呢?我的印象是,我刚刚重命名了视图函数的参数…

该值是从URL生成的

urlpatterns = [
    path('card<int:card_pk>/', views.card, name='card'),
]

def card(request, card_pk):
    try:
        card = Card.objects.get(pk=card_pk)
        if card:
            context = {
                'title': 'Card',
                'tiles': Tile.objects.filter(card=card_pk)
            }
            return render(request, 'cards/card.html', context)
    except:
        return HttpResponseNotFound()
urlpatterns=[
路径('card/',views.card,name='card'),
]
def卡(请求、卡_pk):
尝试:
card=card.objects.get(pk=card\u pk)
如果卡:
上下文={
‘头衔’:‘卡片’,
“tiles”:Tile.objects.filter(card=card\u pk)
}
返回呈现(请求'cards/card.html',上下文)
除:
返回HttpResponseNotFound()

我建议您再看一遍。pk作为关键字参数传递(注意urlpatterns)哦,太完美了!非常感谢你!!
urlpatterns = [
    path('card<int:card_pk>/', views.card, name='card'),
]

def card(request, card_pk):
    try:
        card = Card.objects.get(pk=card_pk)
        if card:
            context = {
                'title': 'Card',
                'tiles': Tile.objects.filter(card=card_pk)
            }
            return render(request, 'cards/card.html', context)
    except:
        return HttpResponseNotFound()