Django HttpResponseRedirect с обработкой URL-переменных - PullRequest
0 голосов
/ 09 января 2020

Я создал форму ввода, чтобы получить данные в Интернет и использовать входы для вызова AP. Когда я хочу обновить страницу sh, появляется всплывающее окно с вопросом, хотите ли вы обновить ссылку sh. Это очень раздражает. Решение состояло в том, чтобы использовать HttpResponseRedirect, который хорошо работает, но отбрасывает все входные данные. Тогда хотя бы использовать переменную в URL с "URL? Rds = 2". Как вы получаете входные переменные через HttpResponseRedirect на тот же сайт? А также как получить переменные из URL для ввода и из ввода для URL?

1 Ответ

0 голосов
/ 09 января 2020

HTML определение ввода:

    <form action="{% url 'page' %}" method="post">
            {% csrf_token %}
            <input type="number" value="{{request.GET.rds}}" name='rds'>
            <input type="submit" value="Search">
    </form>

views.py:

Получение данных из URL-ввода

if 'rds' in request.GET.keys():
        radius = request.GET.get('rds')
    else: 
        request.GET.rds = '3'
        radius = '3'

Перенаправление ввода, если пользователь нажал. При необходимости добавьте больше переменных с помощью & & *.

if request.method == 'POST':
        radius = request.POST.get('rds')
        redirect_link = request.path_info + '?rds=' + str(radius)
        return HttpResponseRedirect(redirect_link)

Это перенаправит радиус на ту же страницу и установит rds в качестве атрибута get, который будет записан методом if.

После этого вы можете использовать данные.

context = {'radius': radius}
return render(request=request, template_name='realestate/page.html', context = context)

Надеюсь, это полезно. Может быть, есть и лучшее решение, чем это.

...