Django : Передача данных в другое представление с помощью кнопки

У меня есть таблица клиентов, где в каждой строке есть кнопка для перенаправления на другую страницу с id клиента. Я не хочу, чтобы это было в URL, поэтому я хочу избежать метода GET, именно поэтому я подумал использовать метод POST с кнопками

Я кое-что сделал, но это не работает, у меня есть сообщение об ошибке "Метод не разрешен (POST)" с определенным URL.

html

<table id="customers"  class="table table-sortable">
            <tr>
                <th>Référence Client</th>
                <th>Client</th>
                <th>Edit</th>
            </tr>
            {% for client in query_list_client %}
                <tr>
                    <td>{{ client.id }}</td>
                    <td>{{ client }}</td>
                    <td>
                        <a href="{% url 'modifyclient' uuid_contrat uuid_group % }" class="btn btn-primary" >Modify</a>
                        <form action="{% url 'selectsaletype' uuid_contrat uuid_group %}" method="POST">
                            {% csrf_token %}
                            <button name = 'client' type ='submit' value="{{ client.id }}" class='btn btn-secondary' > Select </button>
                        </form>

                        <!-- <a href="{% url 'selectsaletype' uuid_contrat uuid_group client.id % }" class="btn btn-secondary" >Selectionner</a> -->
                    </td>
                </tr>
            {% endfor %}
        </table>

урлы

urlpatterns = [ 
    path('<str:uuid_contrat>/<str:uuid_group>/sales/selectclient/', ListSelectClient.as_view(), name="selectclient"),
    path('<str:uuid_contrat>/<str:uuid_group>/sales/selectsaletype/', SelectSaletType.as_view(), name="selectsaletype"),

   ]
просмотров
class SelectSaletType(ListView):
    model = ListSaleType
    paginate_by =10
    template_name = 'sales/selectsaletype.html'
    context_object_name = 'query_sale_type'

    def get_context_data(self, *args, **kwargs) :
    
        context = super(SelectSaletType, self).get_context_data(*args, **kwargs)
        context['uuid_contrat'] = self.kwargs['uuid_contrat']
        context['uuid_group'] = self.kwargs['uuid_group']

        print(self.request.POST)

        return context

    def get_queryset(self):
        
        # Get the UUID_CONTRAT
        uuid_contrat = self.kwargs["uuid_contrat"]
        id_contrat = Entity.objects.all().filter(uuid=uuid_contrat).values_list('id', flat=True)[0]

        query = self.request.GET.get('search')

        if query:
            query_sale_type = self.model.objects.filter(Q(idcustomer=id_contrat)).order_by('-id')
        else:
            query_sale_type = self.model.objects.all().filter(idcustomer=id_contrat).order_by('-id')

        return query_sale_type

Информация должна храниться между представлениями. Сервер не имеет статических данных. Варианты - в cookie браузера или в БД, если вы исключаете размещение в URL или в GET-параметре.

Django предоставляет session (через промежуточное ПО), который может хранить вещи либо в cookies, либо в БД в зависимости от конфигурации. Так что используйте это ( request.session )

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