2017-01-18 12 views
0

djangoを使用してウェブサイトを作成する方法を学んでいます。ユーザーが都市を選択できるホームページがあります。次のページにはホテルの一覧が表示されています。正常に動作しますが、ページが更新されるとエラーが表示されますdjangoでページをリフレッシュするとエラーが発生する

これはリストページのHTMLファイルです。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 

<!-- jQuery library --> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

<!-- Latest compiled JavaScript --> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
<script src="//code.jquery.com/jquery-1.10.2.min.js"></script> 
<script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-backstretch/2.0.4/jquery.backstretch.min.js"></script> 
<script type="text/javascript" src="../js/typeahead/0.11.1/typeahead.bundle.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> 

{% load static %} 
<script src="/static/typeahead.js "></script> 



</head> 
<body> 

<div > 
<div style="float:left; background-color:#d9d9d9;margin-top:100px;width:30%;height:800px;"> 
<h2 style="text-align:center;">Filters</h2> 
<div style="width:95%; margin-left: 10px; " > 
    <form method="post" data-ajax="false" action="{% url 'list' %}"> 
    {% csrf_token %} 

     <div data-role="rangeslider" data-mini="true" style="width:100%"> 
    <label for="range-1a">price:</label> 
    <input name="range-1a" id="range-1a" min="0" max="100" value="0" type="range"> 
    <label for="range-1b">Rangeslider:</label> 
    <input name="range-1b" id="range-1b" min="0" max="100" value="100" type="range"> 
    </div> 
    <input type="submit" value="Submit"> 
     </form> 
    </div> 
</div> 
<div style=" float:right;margin-right:30px;margin-top:100px;width:60%;height:80%"> 



{% for hotel in city_list %} 
{% load static %} 

    <div class="col-md-4" style="width:45%;border:0;position:relative;"> 
    <div class="thumbnail" style="height:300px; background-color:black;border:0;border-radius:0;position:relative;box-shadow:0;" > 
     <a href="/w3images/lights.jpg" data-ajax="false"> 
     <img src="{% static hotel.photo.url %}" style="border:0;height:85%;width:100%;" > 
     <div class="caption"> 
      <p style="color:white;">Name</p> 
     </div> 
     </a> 
    </div> 
    </div> 






{% endfor %} 

</div> 


</div> 



</body> 
</html> 

これは、割り当て

city_listが渡される前に参照されたローカル変数city_list /ポーリング/ wholelist/ で UnboundLocalErrorをリフレッシュすると、私は次のエラーを取得する私のviews.py

def homepage(request): 
    hotel_list=Hotels.objects.all() 
    context={'hotel_list':hotel_list} 
    return render(request, 'polls/homepage.html',context) 

def wholelist(request): 
    hotelvar=request.POST.get('service_type') 
    if hotelvar=='Hotels': 

     city_list=Hotels.objects.filter(city_name__iexact=request.POST.get('searchabc')) 
    if not city_list: 
     hotel_list=Hotels.objects.all() 
     context={'hotel_list':hotel_list} 
     return render(request, 'polls/homepage.html',context) 

    pricemin=200 
    pricemax=800 

    context={'pmin':pricemin,'pmax':pricemax,'city_list':city_list} 
    return render(request, 'polls/list.html',context) 

ですホームページからは、ページがリロードされたときに渡されません。ページが更新されたときにそれを渡す方法はありますか?

+0

私は値を保持するためにセッション変数を使用すべきと設定されていませんか? –

+1

CSSを含むテンプレート全体を投稿する必要はありませんでした。あなたがやっていることを実証するのに必要な最小限に抑えてください。 –

答えて

2

変数「ホテル」と等しくないhotelvarcity_list

def wholelist(request): 
    hotelvar=request.POST.get('service_type') 
    city_list = None 
    if hotelvar=='Hotels': 
      city_list=Hotels.objects.filter(city_name__iexact=request.POST.get('searchabc')) 
    if not city_list: 
     hotel_list=Hotels.objects.all() 
     context={'hotel_list':hotel_list} 
     return render(request, 'polls/homepage.html',context) 

    pricemin=200 
    pricemax=800 
    context={'pmin':pricemin,'pmax':pricemax,'city_list':city_list} 
    return render(request, 'polls/list.html',context) 
+0

条件を削除しました。都市リストの値がリセットされています。だから "もしcity_listでないなら"という条件が真実になっています。投稿データが失われる –

+0

@ShubhamYelekar都市リストがnoneの場合に検索パラメータを保持する必要がある場合は、ページをレンダリングしてページをリフレッシュするのではなく、Ajaxリクエストのjsonレスポンスを送信してください。あるいは、レンダリングメソッドを通じてホームページにコンテキストとしてPOST値を渡して、それをテンプレート –

+0

で処理することもできます。あるいは、レンダリングメソッドを使用してホームページにコンテキストとしてPOST値を渡して、テンプレート内で処理することができます"あなたはそれを説明していただけますか? –

関連する問題