這個想法是顯示一個搜索框,用戶可以在其中鍵入地址,該地址由Google自動填充完成。然後,我們保存lat和long參數並重定向到/search
(使用POST)或(可能使用GET請求)或者/search?lat=xxx&long=xxx
。帶有另一個頁面上的表單動作的POST請求返回405,不處理請求。POST
對於第二種情況,與URL參數,我可以用lat = request.GET('lat')
我的Index.html形式
<form action="{% url 'users:index' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />
<input type="hidden" id="cityname" name="cityname" />
<input type="hidden" id="Lat" name="Lat" />
<input type="hidden" id="Lng" name="Lng" />
<button type="submit">Submit</button>
</form>
當從下拉菜單中用戶挑選時,JavaScript給我的Lat
值,Lng
和cityname
。提交後,他們將被重定向到/users/
,這是一個ListView和具有以下views.py
class IndexView(ListView):
# context_object_name = 'latest_teacher_list'
model = Teacher
def get_context_data(self, **kwargs):
if self.request.method == 'POST' and 'Lat' in self.request.POST:
if self.request.POST['Lat'] != '':
lat = self.request.POST['Lat']
else:
lat = None
else:
lat = None
context = super(IndexView, self).get_context_data(**kwargs)
context['teacher_list'] = Teacher.objects.all()[:5]
context['lat'] = lat
return context
然而,這給了我一個空白頁時,我提交表單。當form action
爲空時,它將表單提交到同一頁面,並正確顯示Lat,Long。但是當表單行動是/users/
它給了我一個405錯誤。
這樣的事情是可能的,還是我需要做GET請求,例如:通過URL參數爲紐帶,所以不是一個形式,我只是有一個鏈接:
users?lat=xxx&long=xxx
在那裏我用JS來填充XXX莫名其妙
您是否在視圖中定義了Post方法? – WebGuy
我認爲這可能是問題...讓我檢查 – Roma
此響應代碼(405)可能來自任何數量的問題,但通常最終會導致您使用的URL錯誤或使用錯誤的請求方法。 – WebGuy