2015-04-22 51 views
0

目前,我的主頁上有一個搜索欄和一個按鈕,就像這樣。使用Django/Python中的已定義查詢搜索

<div class="input-group"> 
<input id="address" type="textbox" placeholder="City or Zipcode" class="form-control"> 
<span class="input-group-btn"> 
<button class="btn btn-default" type="button" id="addressSearch">Search</button> 
</span> 
</div> 

我已經創建了一個api.py文件,它在我的網站文件夾中看起來像這樣。

import urllib2 
import json 

locu_api = '****' 

def loc_search(query): 
    api_key = locu_api 
    url = 'https://api.locu.com/v1_0/venue/search/?api_key=' + api_key 
    locality = query.replace(' ', '%20') 
    final_url = url + "&locality=" + locality + "&category=restaurant" 
    json_obj = urllib2.urlopen(final_url) 
    data = json.load(json_obj) 

    for item in data['objects']: 
     print item['name'] 
     print item['phone'] 

本質上,我試圖做的是當用戶搜索城市例如紐約然後loc_search(查詢)被稱爲填充搜索字段'(查詢)'的用戶輸入和數據,然後顯示。

我對django或api沒有太多的經驗,所以任何幫助都是無價的。再次感謝

+1

注意,你已經暴露你的API密鑰,這可能不是一個好主意。 – karthikr

+0

編輯謝謝:) – Nebbyyy

+2

編輯的值仍然可以通過查看編輯來訪問! – aumo

回答

1

我在django也不是很有經驗,但現在已經工作了3個月,我會建議你使用django-auto-complete-light或django-ajax-導航欄中的前端搜索以及後端字段的django-salmonela。那些是有幫助的。並且輸入標籤並不真正適用於您的django表單,因此您必須在div標籤中使用一個類,並使用{{form.fieldName}}顯式調用每個表單字段,然後使用該小部件來引用你的模板標籤,或者只是使用上面的包知道如何處理你的領域更好。

例如:

您的模板中:

<div class="container text-center form-horizontal topSpace"> 
    <form method="POST" enctype="multipart/form-data" action="{% url 'create-recipe' %}"> 
     {% csrf_token %} 

      {{ form.non_field_errors }} 

       <div class="form-group"> 
        {{ form.name.errors }} 
         <label for="{{ form.name.id_for_label }}" class="col-lg-4 control-label">Name:</label> 
           <div class="col-lg-1"> 
            {# <input type="text" class="form-control" id="user-name" placeholder="Enter your name">#} 
            {{ form.name }} 
           </div> 
       </div><!-- end form-name--> 

      {{ form.as_p }} 

     <input type="submit" value="Add Recipe"> 
    </form> 
</div> 

然後在您的形式:

class RecipeForm(autocomplete_light.ModelForm, forms.ModelForm): 

class Meta: 
    model = Recipe 
    exclude = []