Django, Как передать значения HTML-формы в URL при отправке формы?

У проекта есть url, как показано ниже,

 path('post/<str:state>/',SearchView.as_view(),name='search-data')

У меня есть HTML форма, при заполнении и отправке она должна передавать данные заполненной формы в URL.

<form action={url 'search-data'} method="get" >
      {% csrf_token %}
     
      <input type="text"  name="fname">     
    </form> 

Но это не работает так, как должно быть.

Вам не нужно передавать аргумент <str:state> в ваших urlpatterns просто передайте path('post/search',SearchView.as_view(),name='search-data') или что вы хотите, но проблема в том, что когда вы передаете аргумент как этот post/<str:state>/, вам нужно указать его в действии вашей формы. например, так {% url 'search-data' state %} изначально у вас нет никакого состояния, поэтому вы должны получить имя состояния из вашей формы, так что в конечном итоге ваш код выглядит так

<form action={% url 'search-data'%} method="get" >
      {% csrf_token %}
     
      <input type="text"  name="fname">  
      <input type="submit" value="search">
</form>

и затем в ваших представлениях вы должны получить его из метода request.GET следующим образом

def search(request):
    state = request.GET.get('fname', None)
    .... do whatever you want 
    return response_or_data
Вернуться на верх