Как передать параметры из поля ввода формы с помощью action = "get"? - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь реализовать форму, которая отправляет запрос GET, но я хочу передать аргументы, полученные путем извлечения данных из текстового поля.

Вот пример:

urls .py:

urlpatterns = [
    path('my-awesome-url/<str:foo>', MyAwesomeView.as_view(), name='my_awesome_url'),
]

views.py:

class MyAwesomeView(View):

    def get(self, request, *args, **kwargs):
        foo = kwargs['foo']
        context = {}
        # do some logic here
        return render(request, 'my_awesome_template.html', context)

my_awesome_template. html:

{% extends 'base.html' %}
{% block content %}
    <form method="get" action="{% url 'my_awesome_url' foo %}">
        <input type="text" name="foo">
        <button type="submit" value="Submit">Submit</button>
    </form>
{% endblock %}

Однако этот код не выполняет свою работу. Я получаю эту ошибку:

NoReverseMatch

Реверс для my_awesome_url, аргументы не найдены. Попробован 1 шаблон (ов): ['my \ -awesome \ -url \ / (? P [^ /] +) $']

Я не хочу использовать POST, потому что я хотите, чтобы пользователь мог добавить страницу в закладки. Кроме того, когда я пытался жестко закодировать URL без записи параметров, токен csrf также передавался в URL. Я хочу, чтобы URL был: my-awesome-website.tld/my-awesome-url/foo

...