Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-发送表单数据视图并返回模板_Python_Django_Django Forms - Fatal编程技术网

Python Django-发送表单数据视图并返回模板

Python Django-发送表单数据视图并返回模板,python,django,django-forms,Python,Django,Django Forms,我试图从我的表单中捕获数据并将其发送到我的视图,以便在那里执行一些业务逻辑 我有一个“预订”网站项目,我希望用户选择开始和结束日期(我的模板中有一个jquery日期选择器),然后在表单上提交并发送到我的视图(和数据库)。然后,我的视图将日期与数据库中存储的价格进行比较,以便知道每天的价格,在表单提交后重定向时,数据将显示在网站上 希望这是有道理的 以下是我的看法: def公寓视图(请求、公寓id): reservation=reservation.objects.filter(公寓\uuuu p

我试图从我的表单中捕获数据并将其发送到我的视图,以便在那里执行一些业务逻辑

我有一个“预订”网站项目,我希望用户选择开始和结束日期(我的模板中有一个jquery日期选择器),然后在表单上提交并发送到我的视图(和数据库)。然后,我的视图将日期与数据库中存储的价格进行比较,以便知道每天的价格,在表单提交后重定向时,数据将显示在网站上

希望这是有道理的

以下是我的看法:

def公寓视图(请求、公寓id):
reservation=reservation.objects.filter(公寓\uuuu pk=公寓\u id)
公寓=获取对象或404(公寓,主键=公寓id)
不可用=[]
对于开始,在公寓中结束。预订。值列表(“开始日期”,“结束日期”):

而start根据提供的评论,我想我已经理解了这个问题。您希望将价格也传递到HTML页面上

必须将全局变量定义为
start\u date\u price
end\u date\u price
context

def apartment_view(request, apartment_id):
    context = {}
    start_date_price = 0
    end_date_price = 0

    reservation = Reservation.objects.filter(apartment__pk=apartment_id)
    apartment = get_object_or_404(Apartment, pk=apartment_id)

    unavailable = []
    for start, end in apartment.reservations.values_list('start_date', 'end_date'):
        while start <= end:
            unavailable.append(start.strftime('%-d-%m-%Y'))
            start += datetime.timedelta(days=1)
    form = ReservationForm()
    if request.method == 'GET':
        form = ReservationForm()
        date = request.GET.get('reservation.start_date')
        print(date)

    elif request.method == 'POST':
        form = ReservationForm(request.POST)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')

            reservation = form.save(commit=False)
            reservation.apartment = apartment
            reservation.save()
            form.save()

            # your logic here
            start_date_price = start_date * your_logic
            end_date_price = end_date * your_logic 
            context['start_date_price'] = start_date_price
            context['end_date_price'] = end_date_price

            # I would suggest remove this line and check, when the form renders, it would display all the values there itself
            #return HttpResponseRedirect(reverse('booking:apartment', kwargs={'apartment_id': apartment.pk}))
    context['form'] = form
    context['apartment'] = apartment
    context['unavailable_dates'] = json.dumps(unavailable)
def公寓视图(请求、公寓id):
上下文={}
开始日期价格=0
结束日期价格=0
reservation=reservation.objects.filter(公寓\uuuu pk=公寓\u id)
公寓=获取对象或404(公寓,主键=公寓id)
不可用=[]
对于开始,在公寓中结束。预订。值列表(“开始日期”,“结束日期”):

虽然代码中的start everything似乎都是正确的,但您面临的问题是什么?当用户提交表单时,如何将“start_date”和“end_date”值获取到模板中,我希望在重定向时显示它们。希望我没有把你搞糊涂哈哈!好的,我们通常在提交表单之前显示日期,所以您提到了JQuery日期选择器,它不会在HTML页面上显示日期?JQuery选择器会显示日期,用户用它选择日期。但在用户选择日期后,我想计算总价格(每个日期都有自己的价格),并将它们重定向回同一页面,这次也显示价格。发布后,您将重定向到
预订:公寓
这和这是相同的视图吗?非常感谢您的努力!不幸的是,我没能解释清楚,对不起,英语不是我的母语。我添加了我的模型,希望能让它更清晰。所以我的最终目标是:显示公寓详细信息页面,用户选择日期,重定向到同一页面,只是这次我需要显示每天的价格,以及这些天的总价格。我计划从表格中获取日期,然后将其与公寓价格中的日期进行比较,并以某种方式筛选出正确的价格。到目前为止,这是一场战斗。
def apartment_view(request, apartment_id):
    context = {}
    start_date_price = 0
    end_date_price = 0

    reservation = Reservation.objects.filter(apartment__pk=apartment_id)
    apartment = get_object_or_404(Apartment, pk=apartment_id)

    unavailable = []
    for start, end in apartment.reservations.values_list('start_date', 'end_date'):
        while start <= end:
            unavailable.append(start.strftime('%-d-%m-%Y'))
            start += datetime.timedelta(days=1)
    form = ReservationForm()
    if request.method == 'GET':
        form = ReservationForm()
        date = request.GET.get('reservation.start_date')
        print(date)

    elif request.method == 'POST':
        form = ReservationForm(request.POST)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')

            reservation = form.save(commit=False)
            reservation.apartment = apartment
            reservation.save()
            form.save()

            # your logic here
            start_date_price = start_date * your_logic
            end_date_price = end_date * your_logic 
            context['start_date_price'] = start_date_price
            context['end_date_price'] = end_date_price

            # I would suggest remove this line and check, when the form renders, it would display all the values there itself
            #return HttpResponseRedirect(reverse('booking:apartment', kwargs={'apartment_id': apartment.pk}))
    context['form'] = form
    context['apartment'] = apartment
    context['unavailable_dates'] = json.dumps(unavailable)
<form method="POST" class="post-form">{% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="form-btn save btn btn-default">Send</button>
</form>
 {{start_date_price}}
 {{end_date_price}}