Я не могу понять, почему я получаю MultiValueDictKeyError при перенаправлении на страницу, пытающуюся получить доступ к данным из входа в html-файле в views.py. Похоже, что представление не может найти "main_search" в моем HTML-файле. По сути, я пытаюсь получить значение из ввода в html-файле и использовать его для шаблона url и views.py для отображения на этой странице. У меня такое ощущение, что это что-то до боли очевидное, но мне не повезло, выясняя проблему.
Вот ошибка:
Traceback:
Файл "C: \ Users \ stovi \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ utils \ datastructures.py" в getitem
77. list_ = super (). getitem (ключ)
Во время обработки вышеупомянутого исключения ('main_search') произошло другое исключение:
Файл "C: \ Users \ stovi \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ exception.py" во внутренней
34. response = get_response (запрос)
Файл "C: \ Users \ stovi \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py" в _get_response
126. response = self.process_exception_by_middleware (e, запрос)
Файл "C: \ Users \ stovi \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ core \ handlers \ base.py" в _get_response
124. response = wrapped_callback (запрос, * callback_args, ** callback_kwargs)
Файл "C: \ Users \ stovi \ Desktop \ simple_search \ simple_search_site \ main \ views.py" на странице поиска
31. search = request.POST ["main_search"]
Файл "C: \ Users \ stovi \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ django \ utils \ datastructures.py" в getitem
79. поднять MultiValueDictKeyError (ключ)
Тип исключения: MultiValueDictKeyError at / search = testing /
Значение исключения: 'main_search'
views.py:
from django.shortcuts import render
from django.http import HttpResponse
import wikipedia
def homepage(request):
return render(request=request,template_name="main/search.html")
def wiki_page(request):
return render(request=request,template_name="main/wikis.html")
def map_page(request):
return render(request=request,template_name="main/maps.html")
def video_page(request):
return render(request=request,template_name="main/videos.html")
def book_page(request):
return render(request=request,template_name="main/books.html")
def game_page(request):
return render(request=request,template_name="main/games.html")
def movie_page(request):
return render(request=request,template_name="main/movies.html")
def about_page(request):
return render(request=request,template_name="main/about.html")
def search_page(request,search):
search = request.POST["main_search"]
return HttpResponse(search)
urls.py:
from django.urls import path, include
from . import views
app_name = 'main'
urlpatterns = [
path('', views.homepage, name='homepage'),
path('search=<str:search>/',views.search_page,name='searchpage'),
path('wikis/',views.wiki_page,name='wikipage'),
path('maps/',views.map_page,name='mappage'),
path('videos/',views.video_page,name='videopage'),
path('books/',views.book_page,name='bookpage'),
path('games/',views.game_page,name='gamepage'),
path('movies/',views.movie_page,name='moviepage'),
path('about/',views.about_page,name='aboutpage'),
]
search.html
<html>
{% extends "main/navbar.html" %}
{% block content %}
<main>
<div class="container">
<div style="margin-top:15%">
<h1 class="green-text center-align text-darken-4">Simple Search</h1>
</div>
<form action='"/search="+document.getElementById("main_s").value' name="search" method="POST">
<div class="row">
<div class="input-field">
<input class="green-text text-darken-4 z-depth-0" style="border-color: forestgreen" type="text" id="main_s" name="main_search"/>
</div>
</div>
<div class="center-align">
<a class="waves-effect waves-light btn green darken-4" id="wikis"href="" onclick="this.href='/search='+document.getElementById('main_s').value">Wiki Search</a>
<a class="waves-effect waves-light btn green darken-4" id="maps">Map Search</a>
<a class="waves-effect waves-light btn green darken-4">Video Search</a>
<a class="waves-effect waves-light btn green darken-4">Book Search</a>
<a class="waves-effect waves-light btn green darken-4">Game Search</a>
<a class="waves-effect waves-light btn green darken-4">Movie Search</a>
</div>
</form>
</div>
</main>
{% endblock %}
</html>
Любая помощь будет принята с благодарностью. Кроме того, у меня мало опыта в веб-разработке или в Django, так что если есть вещи, которые я делаю неправильно или неправильно, продолжайте и жарьте меня.