GET без необязательных полей в Django - PullRequest
0 голосов
/ 19 июня 2020

Надеюсь, название имеет смысл. Я хочу иметь возможность выполнять поиск в Yelp API, используя местоположение (обязательно) и имя ( не обязательно). Прямо сейчас вы можете оставить поле имени пустым, но он все равно будет использовать это в поиске, поэтому ничего не будет возвращать, несмотря ни на что.

base. html

<form action="{% url 'venue_list' %}">
     <!-- NOT required -->
     {% render_field search_form.search_name.label %}:   
     {% render_field search_form.search_name class="form-control" %}

     <!-- required -->
     {% render_field search_form.search_location.label %}:
     {% render_field search_form.search_location class="form-control" %}
     <input type='submit' value='SEARCH'>
</form>

yelp_api.py

def get_name(location, term=None):

    url = 'https://api.yelp.com/v3/businesses/search'
    if term != None:
        params = {
            'location': f'{location}',
            'term': f'{term}'
        }
    else:
        params = {
        'location': f'{location}'
        }

    headers = {'Authorization': f'Bearer {YELP_API_KEY}'}

    *etc etc*

forms.py

class SearchForm(forms.Form):
    search_name = forms.CharField(required=False, label='Name')
    search_location = forms.CharField(required=True, label='City, State, or Zip Code')

views_ways.py

def venue_list(request):
    search_location = request.GET.get('zip_code')
    search_name = request.GET.get('name')

    if not Venue.objects.filter(zip_code=search_location).exists():
        venues = yelp_api.get_name(search_location)
        venues = Venue.objects.filter(zip_code=search_location).order_by('name')
    else:
        venues = Venue.objects.filter(zip_code=search_location).order_by('name')

    return render(request, 'restroom_rater/venue_list.html', { 'venues': venues, 'search_location': search_location})

views_ways.py, я знаю, настроен только для поиска местоположения, потому что я изначально настроил его именно так. Застрял, пытаясь указать только местоположение или местоположение И имя. Дайте мне знать, есть ли что-то еще, что я могу добавить для большего контекста.

...