Django error 'context must be a dict rather than DataFrame'

Я работаю над программой-переводчиком. Я хочу, чтобы результат появлялся внизу оригинальной страницы, когда пользователь нажимает кнопку 'Submit'.

Я создал функцию в 'views.py' и вернул результат в виде DataFrame (я проверил, что сам код Python в порядке) и получил ошибку 'context must be a dictator than data frame'. Я попробовал несколько способов изменить его на формат dict, но это только вызвало другие ошибки.

Вот мой код 'views.py' и код 'urls.py'. Пожалуйста, дайте мне знать, если что-то не так.

views.py

class Postview(View):

    @csrf_exempt
    def success(request):
        content = request.POST.get('content')

        dict = pd.read_csv("C:\\Users\\user\\jeju-dialect-translation\\jeju\\dialect\\dict2.csv", sep=",", encoding='cp949')
        
        hannanum = Hannanum()
        okt = Okt()

        nouns = hannanum.nouns(content)

        stem = okt.morphs(content, stem = True)

        tempt=[]

        for i in range(0, len(stem)):
            if (len(stem[i]) == 1):
                tempt.append(stem[i])

        adjective = list(set(stem) - set(tempt))

        results = pd.DataFrame(columns = {'siteName', 'contents'})

        for i in nouns:
            x = dict[dict['siteName'] == i]
            x = x[['siteName', 'contents']]
            results = pd.concat([results, x], axis = 0)

        for i in adjective:
            y = dict[dict['siteName'].str.match(i)]
            results = pd.concat([results, y], axis = 0)

        context = results.drop_duplicates()

        return render(request, 'dialect/trans_suc.html', context)

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('dialect/', views.Postview.as_view(), name='main_page'),
    path('trans/', views.Postview.success, name='trans_suc')
]

Вы можете использовать метод Pandas to_dict, https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html

  context = results.to_dict()


‘dict’ (default) : dict like {column -> {index -> value}}

‘list’ : dict like {column -> [values]}

‘series’ : dict like {column -> Series(values)}

‘split’ : dict like {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values]}

‘tight’ : dict like {‘index’ -> [index], ‘columns’ -> [columns], ‘data’ -> [values], ‘index_names’ -> [index.names], ‘column_names’ -> [column.names]}

‘records’ : list like [{column -> value}, … , {column -> value}]

‘index’ : dict like {index -> {column -> value}}

Контекст Django - это объект типа dictonary. Чтобы узнать о нем больше, перейдите по этой ссылке. В принципе, для устранения этой ошибки вы можете сделать следующее:

dropped_duplicates_result = results.drop_duplicates()
context = dropped_duplicates_result.to_dict()

Здесь вы отбрасываете дубликаты, затем преобразуете его в объект типа "словарь", поскольку контексты имеют тип словаря.

Документы для pandas.DataFrame.to_dict()

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