这个想法是显示一个搜索框,用户可以在其中键入地址,该地址由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