Как сохранить значение переменной после запроса, но при первой загрузке иметь другое значение? - PullRequest
1 голос
/ 19 июня 2020

У меня есть приложение Flask, в котором пользователь может выбрать желаемый период. У периода есть дата начала и дата окончания. При первой загрузке страницы я хочу, чтобы дата начала была первым числом текущего месяца, а конечной датой был текущий день. Я использовал этот код для выполнения этой работы, где d1 - дата начала, а d3 - день окончания:

$('#d1').val(today.getFullYear() + "-" + ('0' + (today.getMonth() + 1)).slice(-2) + "-" + ('0' + 1));
$('#d3').val(today.getFullYear() + "-" + ('0' + (today.getMonth() + 1)).slice(-2) + "-" + ('0' + (today.getDate())).slice(-2));

Я хочу иметь возможность сохранять период, выбранный пользователем после нажатия кнопки отправки. На данный момент, после того как пользователь нажимает кнопку отправки, у меня есть дата начала как 1 месяца и дата окончания как текущий день. Это происходит независимо от того, какие даты выбирает пользователь. После отправки я хочу иметь возможность отображать дату начала и дату окончания как даты, выбранные пользователем. Как этого добиться? Я думал об использовании

$('[name=d1]').val("{{ request.form['d1'] }}");

, но это сбрасывает дату начала, делая ее мм / дд / гггг в самом начале, поскольку не было запроса. Как сохранить дату после того, как пользователь выберет ее? Но позволяя датам, выбранным при первой загрузке страницы как 1 месяц и текущая дата.

1 Ответ

0 голосов
/ 19 июня 2020

У вас есть множество вариантов для достижения этого

Если вы используете Flask шаблонизатор для отображения ответа, вы можете установить даты перед ответом в шаблоне.

при условии, что маршрут, по которому вы хотите отправить дату: /

@app.route('/')
def index():
    start_date = request.form['start_date']
    end_date = request.form['end_date']
    ...
    return render_template('template_name.html', start_date=start_date, end_date=end_date )

в вашем шаблоне

<input type="date" value="{{start_date}}" />
<input type="date" value="{{end_date}}" />

Другой вариант - использовать localStorage непосредственно на стороне клиента

Кроме того, это зависит от того, используете ли вы jquery submit или HTML form submit

, если вы используете jquery submit

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

, тогда вы должны обработать измените обратный вызов успеха

на что-то вроде

$('[name=d1]').val("{{ request.form['d1'] }}");

Надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...