#django
Вопрос:
Я пытаюсь создать подробную страницу для каждой player
из Players
моделей, но по какой-то причине я получаю эту ошибку. Как я могу это исправить?
Мой models.py:
class Players(models.Model):
name = models.CharField(max_length=255)
position = models.CharField(max_length=255)
image_url = models.CharField(max_length=2083)
Мой views.py:
def PlayerDetailView(request, player):
model = Players
player = request.Players
context = {'player' : player}
return render(request, 'player_detail.html', context)
Мой player_detail.html:
{% extends 'base.html' %}
{% block content %}
<h1>{{ player.name }}</h1>
<img class="card-img-top" width="20" height="300" src="{{ player.image_url }}">
{% endblock %}
Мой urls.py:
path('players/<str:player>', views.PlayerDetailView, name='player-detail'),
Комментарии:
1. Что
player = request.Players
прикажете делать?2. извините, я забыл отдать свой urls.py
Ответ №1:
Дайте этому попробовать
def PlayerDetailView(request, player):
model = Players
player = Players.objects.get(name=player)
context = {'player' : player}
return render(request, 'player_detail.html', context)
Ответ №2:
Вы можете получить Player
объект с именем <str:player>
в качестве параметра URL с:
from django.shortcuts import get_object_or_404
def PlayerDetailView(request, player):
player = get_object_or_404(Players, name=player)
context = {'player' : player}
return render(request, 'player_detail.html', context)
Однако обычно используется пуля, а не имя Player
, поскольку это может привести к «уродливым» URL-адресам, если мы работаем с пробелами, акцентами и т. Д. Для получения дополнительной информации см. документацию по a SlugField
.
Комментарии:
1. да, еще 6 минут