使用 Django url 在按钮单击上执行 api 函数 - Django/Python
execute api function on button click using Django urls - Django/Python
就目前而言,我已经设置了我的网站,并且有一个搜索栏和搜索按钮,我希望在我的 api.py 文件中执行我的 api 功能。 api.py 文件如下所示:
import urllib2
import json
locu_api = '****'
def loc_search(request):
query = request.GET.get('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']
我已经像这样添加到我的 urls.py 中:
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.views.generic import TemplateView
from django.contrib import admin
urlpatterns = patterns(
"",
url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
url(r"^admin/", include(admin.site.urls)),
url(r"^account/", include("account.urls")),
url(r"^api/", 'loc_search', name="search"),
)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我在我的网址中调用它了吗?我的 api 文件与 urls.py 一起在我的主文件夹中?话虽这么说,然后我在我的表格中这样称呼它:
<form action="{% url "search" %}">
<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>
</form>
但是当我搜索时没有任何反应。据我所知,我相信我已经正确设置了它,但我显然错了,我对 django 还很陌生,所以非常感谢任何帮助
第一个问题是您的 api 电话
我强烈建议你使用 requests 否则你会做类似 locality = query.replace(' ', '%20')
的事情,它对空格进行 urlencodes 但所有其他的事情如 öäü + * 呢?等 ?
import requests
api_params = {'api_key':locu_api, 'locality': locality, 'category':'restaurant'}
apicall = requests.get(api_url, params=api_params)
json_respons = apicall.json()
您的第二个问题是(Daniel Roseman 提到过)这是一个视图(应该在 views.py 中)并且必须 return 一个 http 响应。 docs
复制意大利面
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
# this will return a html as a http response
return HttpResponse(html)
在询问基础知识之前你应该做 django tutorial
就目前而言,我已经设置了我的网站,并且有一个搜索栏和搜索按钮,我希望在我的 api.py 文件中执行我的 api 功能。 api.py 文件如下所示:
import urllib2
import json
locu_api = '****'
def loc_search(request):
query = request.GET.get('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']
我已经像这样添加到我的 urls.py 中:
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.views.generic import TemplateView
from django.contrib import admin
urlpatterns = patterns(
"",
url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
url(r"^admin/", include(admin.site.urls)),
url(r"^account/", include("account.urls")),
url(r"^api/", 'loc_search', name="search"),
)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我在我的网址中调用它了吗?我的 api 文件与 urls.py 一起在我的主文件夹中?话虽这么说,然后我在我的表格中这样称呼它:
<form action="{% url "search" %}">
<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>
</form>
但是当我搜索时没有任何反应。据我所知,我相信我已经正确设置了它,但我显然错了,我对 django 还很陌生,所以非常感谢任何帮助
第一个问题是您的 api 电话
我强烈建议你使用 requests 否则你会做类似 locality = query.replace(' ', '%20')
的事情,它对空格进行 urlencodes 但所有其他的事情如 öäü + * 呢?等 ?
import requests
api_params = {'api_key':locu_api, 'locality': locality, 'category':'restaurant'}
apicall = requests.get(api_url, params=api_params)
json_respons = apicall.json()
您的第二个问题是(Daniel Roseman 提到过)这是一个视图(应该在 views.py 中)并且必须 return 一个 http 响应。 docs
复制意大利面
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
# this will return a html as a http response
return HttpResponse(html)
在询问基础知识之前你应该做 django tutorial