在django的views.py中的if条件下弹出



在满足if条件后,我想在views.py中显示一个弹出窗口,而不是如下所示的httpresponse-(下面是views.py的代码部分(

if data['check_in'] > now and data['check_out'] > now and data['check_out'] > data['check_in']:
#Check if the room is available
if available_rooms is not None:
if len(available_rooms) >= int(num_rooms_req):
for i in num_rooms_req_lst:
#Book the First available room
# print(available_rooms[i-1])
booking = book_room(request, available_rooms[i-1],data['check_in'],data['check_out'],total_cost)
return HttpResponse(booking)
else:
return HttpResponse('Only 1 rooms available in this category')                                                    
else:
return HttpResponse('All the rooms of this category are booked! Try another category!')
else:
return HttpResponse('checkin/checkout date in past or checkout date is prior to checkin date!')

因此,在上面的views.py代码部分-显示返回的HttpResponse弹出窗口或警报的最佳方式是什么(但警报会将我带到不同的html(-我不想导航离开父html。。。

from django.contrib import messages
if data['check_in'] > now and data['check_out'] > now and data['check_out'] > data['check_in']:
if the room is available
if available_rooms is not None:
if len(available_rooms) >= int(num_rooms_req):
for i in num_rooms_req_lst:
booking = book_room(request, available_rooms[i-1],data['check_in'],data['check_out'],total_cost)
return HttpResponse(booking)
else:
messages.warning(request,'Only 1 rooms available in this category')
return redirect('rediect_path') #/user/login/                                                    
else:
messages.warning(request,'All the rooms of this category are booked! Try another category!')
return redirect('rediect_path') #add your rediect path
else:
messages.success(request,'checkin/checkout date in past or checkout date is prior to checkin date!')
return redirect('rediect_path')

将此添加到您的HTML 中

{% if messages %}
<ul class="messages">
{% for message in messages %}
<li class="{{ message.tags }}">{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

我们可以添加这5种类型的消息。

调试,信息,成功,警告,错误

messages.debug(request, 'Total records updated {0}'.format(count))
messages.info(request, 'Improve your profile today!')
messages.success(request, 'Your password was updated successfully!')
messages.warning(request, 'Please correct the error below.')
messages.error(request, 'An unexpected error occured.')

请参考

@Akash Nagtilak-感谢您的回答我试着使用上面的,但不确定这两个东西-

  1. 在redect_path中可以给出什么,因为在我发布的代码片段中,它是我添加的views.py的post部分,但在get部分,我有我想保留的带有上下文的html-供您参考,我正在粘贴完整的views.py.类
  2. 我应该在哪里添加您在HTML中给出的部分-
class RoomDetailView(View):
def get(self, request, *args, **kwargs):
id = self.kwargs.get('id', None)
form = AvailabilityForm()
print(form)
human_format_room_category = get_room_category_human_format(id)        
if human_format_room_category is not None:
context={
'room_category': human_format_room_category,
'form': form,
}
return render(request,'room_detail_view.html', context)
else:
return HttpResponse('category does not exist')
def post(self, request, *args, **kwargs):
#Get room category from kwargs
id = self.kwargs.get('id', None)
#Pass request.POST to AvailabilityForm        
form = AvailabilityForm(request.POST)

#Checking form Validity
if form.is_valid(): #check the validity of the form and return the cleaned data from the form
data =  form.cleaned_data

now = timezone.now()
num_rooms_req = request.POST.get('Num_Rooms')
print("no rooms requested",num_rooms_req)
num_rooms_req_lst = list(range(1, int(num_rooms_req)+1))
#Get Available Rooms
available_rooms = get_available_rooms(id, data['check_in'],data['check_out'])
# print("rooms_available",len(available_rooms))
#get the total charge for the room
total_cost = find_total_room_charge(data['check_in'],data['check_out'],id)
if data['check_in'] > now and data['check_out'] > now and data['check_out'] > data['check_in']:
#Check if the room is available
if available_rooms is not None:
if len(available_rooms) >= int(num_rooms_req):
for i in num_rooms_req_lst:
#Book the First available room
# print(available_rooms[i-1])
booking = book_room(request, available_rooms[i-1],data['check_in'],data['check_out'],total_cost)
return HttpResponse(booking)
else:
messages.warning(request,'Only 1 rooms available in this category')
return HttpResponse('redirect_path')                                                       
else:
return HttpResponse('All the rooms of this category are booked! Try another category!')
else:
return HttpResponse('checkin/checkout date in past or checkout date is prior to checkin date!')

@Omayer Hasan Marif——感谢您的回复

我需要从我在上面代码片段的get部分调用的html弹出窗口,我已经共享了该代码片段,即-room_detail_view.html

不确定我是否了解API。。。

最新更新