Я не могу создать POST-запрос, не прерывая отображение всей моей страницы, когда я хочу изменить свои параметры. В настоящее время я могу изменять параметры API yelp fusion только вручную, но я хочу, чтобы пользователь мог их изменять. Однако я не могу создать форму для ее принятия.
Я хочу перейти от ручного ввода их к чему-то вроде
params = {'categories': user_input, 'location': Pre_set}
, где пользователь может изменить его и сохранить вбаза данных или что-нибудь в этом роде
views.py
def yelp_query(request):
business_id = secret1
YELP_API_KEY = secret
YELP_SEARCH = 'https://api.yelp.com/v3/businesses/search'.format(business_id)
headers = {'Authorization': 'Bearer %s' % YELP_API_KEY}
params = {'categories': 'Sushi', 'location': 'Boston'}
****** #params = {'categories': user_input, 'location':'Boston}***** WHAT I WANT
req = requests.get(YELP_SEARCH, headers=headers, params=params)
parsedData = []
jsonList = json.loads(req.text)
print(json.dumps(jsonList, indent=4))
businesses = jsonList["businesses"]
for yelp in businesses:
yelpData = {}
yelpData['name'] = yelp["name"]
yelpData['location'] = yelp["location"]["display_address"]
yelpData['rating'] = yelp["rating"]
yelpData['price'] = yelp["price"]
yelpData['phone'] = yelp["phone"]
parsedData.append(yelpData)
print(yelpData)
print(parsedData)
context = {'parsedData' : parsedData, 'form':form}
return render(request,'Trends/yelp.html', context)
yelp.html
{% extends 'Trends/base.html' %}
{% block body %}
<h2>Yelp Recommendations </h2>
<form action="#" method="post">
{% csrf_token %}
<input type="text" class="form-control" id="yelp" placeholder="" value=""
name='yelp'> <input type="submit" value="Submit">
</form>
{# <!-- {% for card in parsedData %}#}
{# <ul>#}
{# <li>{{ card.name }} {{ card.location }} </li>#}
{# <li>{{ card.phone }}</li>#}
{# <li>Rating : {{ card.rating }}</li>#}
{# <li>Relative Price : {{ card.price }}</li>#}
{##}
{# </ul> -->#}
{# {% endfor %}#}
{% endblock %}
</form>
forms.py
class yelpForm(ModelForm):
class Meta:
model = catParams
fields = ['categories', 'location']
urls.py
app_name = 'Trends'
urlpatterns = [
#/trends/
path('', views.IndexView.as_view(), name='trends'),
#/trends/favorites
#will give you a specific place for your favorite
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('yelp/', views.yelp_query, name ='search'),
path('register', views.UserFormView.as_view(), name ='register')
]
И когда я пытаюсь получить POST в представлении, он не позволитменя, потому что мне нужно иметь параметры, прежде чем файл JSON будет проанализирован. Я могу анализировать файл JSON без проблем вручную, но я хочу, чтобы пользовательский ввод изменил его. Любой совет помогает.