繁体   English   中英

如何在Python中发出异步请求

[英]How to make asynchronous Requests in Python

我一直在使用Django应用程序,在该应用程序中有一个页面,用户可以在其中输入形式的字符串(用于查询),该形式将使用api连接到url以获取演唱会数据。 我尝试使用ajax请求url,但是显然api的服务器不允许客户端请求数据,这意味着这必须在python的服务器端完成。

我看着像一些SO帖子这一个 ,这等一个 ,但他们似乎都具有可在一般的方式或不使用框架的使用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()

试试这个,我认为问题可能是网址中的无效字符:

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"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM