Как создать поле ввода для изменения параметров API Yelp Fusion? - PullRequest
0 голосов
/ 25 октября 2019

Я не могу создать 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 без проблем вручную, но я хочу, чтобы пользовательский ввод изменил его. Любой совет помогает.

...