Неожиданное ключевое слово при передаче параметра URL - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть представление под названием «Команды», которое просматривает различные команды NBA в словаре и показывает их имя и логотип.Когда пользователь нажимает на один из этих логотипов, я хочу, чтобы они были перенесены в «TeamDetailView».Это должно нести город / название / логотип выбранной команды, и я вижу, как эта информация передается в URL.Однако, когда я пытаюсь загрузить отдельную страницу команды, она выдает мне ошибку типа и говорит, что

TeamDetailView() got an unexpected keyword argument 'city'

В разделе локальных переменных он показывает, что мои пары ключ / значение переданы правильно.Как я могу получить доступ к этим параметрам на странице команды и исправить эту ошибку?

callback_kwargs {'city': 'Atlanta', 'logo': 'atlanta-logo.png', 'name': 'Hawks'}

Вот мой взгляд:

def TeamDetailView(request): 

    return render(request, 'bandwagon/team.html/')

Вот мой URL:

    path('team/<str:city>/<str:name>/<str:logo>/', views.TeamDetailView, name='bandwagon-team'),

Вот мой Шаблон для Списка Команд:

{% for key, value in teams.items %}
    <a class="stream-list" href="{% url 'bandwagon-team' value.city value.name value.logo %}">
        <img class="stream-img" alt="The Logo for the {{ value.city }} {{ value.name }}" src="../../../media/logos/{{ value.logo }}">
        <p class="name">{{value.city }} {{value.name}}</p>
    </a>
{% endfor %}

Вот мой Шаблон для Страницы Индивидуальной Команды, который пока является базовым, пока я не передам эти параметры правильно:

{% extends 'bandwagon/base.html' %}
{% block content %}
    <h1 class="article-title">Team</h1>

{% endblock content %} 

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Вы пытались обновить функцию TeamDetailView для принятия параметров URL?Что-то вроде -

def TeamDetailView(request, city, name, logo): 

    return render(request, 'bandwagon/team.html/')

0 голосов
/ 25 сентября 2019

Как вам сказали, прежде чем вы не извлекаете данные из пути, вы просто визуализируете HTML без какого-либо контекста:

Чтобы решить эту проблему, я бы отфильтровал команду по даннымвы получаете путь, например:

def TeamDetailView(request, city, name, logo):

   Result = Your_Model.objects.all().filter(Q(City=city, Name=name, Logo=logo))
   return render(request, 'bandwagon/team.html', {'Teams': Result})

И тогда в вашем шаблоне вы можете сделать что-то вроде:

 {% for Team in Teams %}

    # What you want to achieve

 {% endfor %}
...