Передача значения формы ввода в переменную URL

Мне нужно передать ввод формы, введенный пользователем, в переменную URL в Django

<form>
          <div class="input-group">
            <input type="text" name="ticker" class="form-control" placeholder="Search">
            <div class="input-group-btn">
              <a her="{% url 'Main:search' %}" class="btn btn-default">
                <i class="bi bi-search"></i>
              </a>
            </div>
          </div>
        </form> 

Значение ввода необходимо передать в качестве переменной в следующей логике URL

"{% url 'Main:search' %}"

urls.py

app_name = 'Main'
urlpatterns = [
    path("", views.index, name='index'),
        path('search/<ticker>', views.search, name='search'),
]

views.py

def search(request, ticker):
    ticker = ticker.upper()
    result = Symbol.objects.filter(symbol=ticker).first()
    if result is not None:
        return redirect('Symbol:index', ticker=ticker)
    else:
        return render(request, 'symbol_not_found.html')

попробуйте это:

the_view.html:

<form>
    <div class="input-group">
    <input type="text" name="ticker" class="form-control" placeholder="Search">
    <div class="input-group-btn">
        <a herf="{% url 'Main:search' ticker %}" class="btn btn-default">
        <i class="bi bi-search"></i>
        </a>
    </div>
    </div>
</form> 

urls.py



app_name = 'Main'
urlpatterns = [
    path("", views.index, name='index'),
        path('search/<str:ticker>', views.search, name='search'),
]

views.py

from django.shortcuts import get_list_or_404
from django.urls import reverse

def results(request, ticker):
    result = get_list_or_404(Symbol, symbol=ticker) # If list is empty 404
    result = result[0] # get the first element in the list
    return render(request, reverse('Symbol:index',args=(ticker=ticker,)))

Чтобы получить больше информации, вам следует сделать небольшой вводный проект в Django Docs, особенно эту часть.

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