HTML-формы Django: получить данные с помощью запроса get и перейти к другому представлению - PullRequest
0 голосов
/ 04 марта 2019

Я использую два представления в django: одно для отображения формы и получения данных, а затем использую данные в качестве аргумента для второго представления.Но я не мог понять, как это сделать.

Пока мои взгляды выглядят как

class View1(View):

    def get(self, request):

        return render(request, 'example/view1.html')

class View2(View):

    def get(self, request, arg1):
        token = processData(arg1)
        context = {
            'word': token,
        }
        return render(request, 'example/view2.html', context)

У меня есть urls.py, настроенный как

app_name = example 

urlpatterns = [ 
    path('', View1.as_view(), name='view1'), 
    path('view2/', View2.as_view(), name='view2'), 
    ]

Теперь в шаблоне view1.html у меня есть следующий код

<form action="{% url 'example:view2 expected_argument %}" method="get">
        {% csrf_token %}

        <input id="key" type="text" name="key">
        <input type="submit" value="Submit">

</form>

, что будет «ожидаемый_аргумент» в шаблоне, чтобы я мог получить значение формы ввода из шаблона view1.html,а затем передать его в View2.

1 Ответ

0 голосов
/ 04 марта 2019

Нет «ожидаемого аргумента».Ваш URL-адрес view2 не принимает такой адрес, и в любом случае форма не может обновить собственный URL-адрес подобным образом.

Вам вообще не нужен аргумент.Удалите arg1 из сигнатуры этого get метода и получите данные внутри этой функции с помощью request.GET['key'].

...