Django отображение каждого объекта в кнопке

Добрый день, у меня есть страница для тестирования, где создаются тикеты и где перечислены все созданные тикеты (заголовки). Теперь вы должны иметь возможность нажать на название созданного тикета.

Кнопка перенаправляет на дополнительную страницу, где находится вся информация о конкретном билете.

У меня всегда были проблемы с отображением специфичных для пользователя вещей, так что нужно сделать, чтобы href="" каждой ссылки перенаправляло в HTML на конкретный билет?

Я сделал следующее \\\forms.py

  {% for i in request.user.addtitle_set.all %}
  <div>
    {% if i.user == request.user %} {{ i.title }} {% endif %}
    <form action="{% url SOMETHING_HERE i.id}" style="display: inline">
      <button type="submit">View Ticket</button>
    </form>
  </div>
  <br />
  {% endfor %}

\\\urls.py

    path('dashboard/user/ticket', ticket_view),
    path('dashboard/user/ticket/<int:id>/',
         ticket_system_view, name="view_ticket"),

\\\ models.py

class Ticket(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        default=None,
        null=True,
        on_delete=models.CASCADE,
    )
    title = models.CharField(max_length=200)
    description = models.TextField()
    creator_adress = models.GenericIPAddressField(null=True)
    start_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return str(self.title)

\\\views.py

@login_required
def ticket_view(request, id, *args, **kwargs):

    try:
        obj = Ticket.objects.get(id=id)
    except Ticket.DoesNotExist:
        return redirect('/')

    if request.method == 'POST':
        form = TicketForm(request.POST, instance=Ticket(user=request.user))
        if form.is_valid():
            obj = form.save(commit=False)
            obj.creator_adress = get_client_ip(request)

            obj.save()
            return redirect('/dashboard/user/ticket')
    else:
        form = TicketForm()
    return render(request, 'ticket.html', {'form': form})


def ticket_system_view(request, id, *args, **kwargsw):
    # Here I will put all the stuff for the specific ticket page
    return render(request, 'ticket_system.html', {})

Редактирование: Я даже не могу получить доступ к странице из-за ошибки TypeError at /dashboard/user/ticket

ticket_views() отсутствует 1 обязательный позиционный аргумент: 'id'

Ваш urls.py

path('dashboard/user/ticket', ticket_view),
path('dashboard/user/ticket/<int:id>/',
         ticket_system_view, name="view_ticket"),

Должно быть

path('dashboard/user/ticket/<int:id>', ticket_view, name="some_name"),
path('dashboard/user/ticket/<int:id>/',
         ticket_system_view, name="view_ticket"),

Так как ticket_view ожидает id

ticket_views() missing 1 required positional argument: 'id'

В вашем views.py вы получаете id аргумента, поэтому он должен быть передан. Измените urls.py как

path('dashboard/user/ticket/<int:pk>', ticket_view, name='ticket_view'),
path('dashboard/user/ticket/<int:id>/',
         ticket_system_view, name="view_ticket"),

Также ваш urlnamespace в вашей форме как

<form action="{% url 'ticket_view' i.id %}" style="display: inline">

В теге шаблона url должны быть пробелы до и после %. Вам не хватает окончания % добавьте его тоже.

Вернуться на верх