Ошибка Django «WSGIRequest» объект не имеет атрибута «Игроки»

#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 минут