Search() получил неожиданный ключевой аргумент 'query'

Я хочу реализовать функцию поиска с помощью веб-фреймворка Django. Я работаю над получением публичных данных (API) и получением данных, соответствующих результатам поиска, и отображением их на странице index.html.

Это поисковый вид!

def search(request):
    base_url = "http://apis.data.go.kr/5710000/benlService/nltyArtList"
    image_api_url = "http://apis.data.go.kr/5710000/benlService/artImgList"

    # 검색어 가져오기
    search_query = request.GET.get('q', '')

    params = {                            "serviceKey":"gKat/nvnmi8i9zoiX+JsGzCTsAV75gkvU71APhj8FbnH3yX4kiZMuseZunM0ZpcvKZaMD0XsmeBHW8dVj8HQxg==",
        "pageNo": "1",
        "numOfRows": "5",
        "returnType": "json",
        "artNm": search_query
    }

    response = requests.get(base_url, params=params)

    if response.status_code == 200:
        data = response.json()
        art_list = data['response']['body']['items']['item']

        # 작품 이미지 정보
        for art in art_list:
            image_params = {
       "serviceKey":"gKat/nvnmi8i9zoiX+JsGzCTsAV75gkvU71APhj8FbnH3yX4kiZMuseZunM0ZpcvKZaMD0XsmeBHW8dVj8HQxg==",
                "pageNo": "1",
                "numOfRows": "5",
                "returnType": "json",
                "artNm": art["artNm"]  # 'art_name' 대신 'art["artNm"]' 사용
            }

            image_response = requests.get(image_api_url, params=image_params)
            if image_response.status_code == 200:
                image_data = image_response.json()
                if 'item' in image_data['response']['body']['items']:
                    art["image_url"] = image_data["response"]["body"]["items"]["item"]["imgUrl"]
                else:
                    art["image_url"] = None
            else:
                art["image_url"] = None
    else:
        # 에러 처리
        print("API 요청 실패:", response.status_code)
        art_list = []

    return render(request, 'index.html', {'art_list': art_list, 'search_query': search_query})

Это настройка пути urls.py:

urlpatterns = [# path('', views.index, name='index'),  # 예를 들어, index view로 연결path('', views.openapi_view, name='index'),path('search/<str:query>/', views.search, name='search'),]

views.search() будет вызываться таким образом Django, когда приходит HttpRequest для URL-пути 'search':

views.search(request, "some-query")

Внутреннее устройство немного сложнее, но по сути это все. Ожидается, что этот путь будет вызван HTTP-клиентом следующим образом: "http[s]://DOMAIN/search/some-query/".

Поскольку это динамический URL, напишите сигнатуру функции таким образом, чтобы она могла получить значение динамического URL, когда Django вызовет представление с этим значением.

def search(request, query: str):
    #•••Rest of code•••

Подсказка типа не требуется.

Вернуться на верх