Навигация Django как POST-вход для динамического представления

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

В навигационной панели находятся названия городов, как мне сохранить выбор пользователя в навигации в информации сессии и использовать его в качестве входных данных для представления?

В форме POST?

base.html

   <div class="navigation">
        <ul>
            <li>
                <a href="#">
                    <span class="title">City 1</span>
                    </option>
                </a>
            </li>
            <li>
                <a href="#">
                    <span class="title">City 2</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <span class="title">City 3</span>
                </a>
            </li>
            <li>
                <a href="#">
                    <span class="title">City 4</span>
                </a>
            </li>
        </ul>
    </div>

Вы можете создать новый View, например /city/str:cityname, получить информацию о городе и использовать ваш существующий шаблон, который отображает детали о городе.

В вашем base.html вы можете поместить href следующим образом city/City1. Это должно сделать get запрос к этому представлению /city/str:cityname.

Вы можете использовать запрос get к представлениям при нажатии на одну из опций. Например:

В разделе навигации base.html ваш элемент списка будет иметь вид

<li>
    <a href="{% url 'get-city-data' city=city2 %}">
        <span class="title">City 2</span>
    </a>
</li>

Так что ваш urls.py будет выглядеть примерно так

urlpatterns = [
    # your existing urls
    path('get-city-data/<str:city>/', get_city_data, name='get-city-data'),
]

И взгляды как

def get_city_data(request, city=None):
    # your logic here to return data filter by city
    context = {} # populate with required context
    return render(request, 'city.html', context)
Вернуться на верх