我一直在研究一个Django应用程序,其中我有一个页面,用户可以在其中输入表格中的字符串(用于查询),该表格将使用api连接到网址以获取音乐会数据。我试图使用ajax请求url,但显然api的服务器不允许客户端请求数据,这意味着必须在python的服务器端完成。
我查看了一些SO帖子,例如this one和这个other one,但他们似乎都有解决方案,可以通过一般方式使用python或不使用框架来实现。我应该如何在Django中的服务器端请求这些数据?
使用以下代码,由于某种原因,我收到了400错误。在视图中完成的所有操作都是基于表单输入对站点的请求。我只是测试变量是否可以连接到URL但是代码似乎确实已设置好,以便在用户单击提交时发布表单数据,因为我有另一个视图,其中包含发送电子邮件的相同结构使用表单变量,所以我不确定为什么这不起作用。
来自views.py的功能:
def search(request):
form = SearchForm(request.POST or None)
if form.is_valid():
form_artistSelect = form.cleaned_data.get("artist_select")
form_city = form.cleaned_data.get("city")
form_state = form.cleaned_data.get("state")
mile_radius = form.cleaned_data.get("radius")
print "testing"
url = "http://api.bandsintown.com/events/search?artists[]=" + form_artistSelect + "&location=" +form_city+","+ form_state+"&radius="+ mile_radius + "&format=json&app_id=YOUR_APP_ID"
data = json.load(urllib2.urlopen(url))
print data
context = {
"form" : form
}
return render(request,"searchform.html" , context)
页面上使用的表单的属性
class SearchForm(forms.Form):
artist_select = forms.CharField()
city = forms.CharField()
state = forms.CharField()
radius = forms.CharField()
答案 0 :(得分:1)
试试这个,我认为问题可能是网址中的无效字符:
form_artistSelect = urllib2.quote(form.cleaned_data.get("artist_select"))
form_city = urllib2.quote(form.cleaned_data.get("city"))
form_state = urllib2.quote(form.cleaned_data.get("state"))
mile_radius = urllib2.quote(form.cleaned_data.get("radius"))