Я пытаюсь создать сайт, который позволяет посетителям искать книги с помощью другой поисковой системы. У меня есть скрипт, который принимает запрос и возвращает HTML с результатами поиска, но я изо всех сил пытаюсь сделать для этого фронт-энд. Я использую django, потому что это выглядело как лучший вариант, когда я начинал, но сейчас я хожу по кругу и не могу понять, как это сделать - я просто ошеломлен, потому что разные учебники и документация Я читаю все go в расширенный материал, прежде чем смогу заставить работать базовый c.
Нужны ли отдельные шаблоны поиска и результатов? Прямо сейчас я получаю сообщение об ошибке The view book_search.views.search didn't return an HttpResponse object. It returned None instead.
Как я могу исправить эту ошибку и / или спроектировать все это лучше?
Вот что у меня есть (скрипт, который возвращает результаты в html, pull.py): представления и URL-адреса находятся внутри приложения book_search.
views.py:
from django.shortcuts import render
from django.http import HttpResponse
from . import pull
from .forms import SearchForm
def index(request):
return HttpResponse("Welcome to the index page")
def test_search(request):
context = {'query': 'test query'}
return render(request, 'book_search/search.html', context)
def search(request):
if request.method == "GET":
form = SearchForm(request.GET)
if form.is_valid():
query = form.cleaned_data['query']
results = pull.main(query)
context = {'query': query, 'form': form, 'results': results}
return render(request, 'book_search/results.html', context)
apps.py:
from django.apps import AppConfig
class BookSearchConfig(AppConfig):
name = 'book_search'
urls. py:
from django.urls import path
from . import views
urlpatterns = [
path('index', views.index, name='index'),
path('test', views.test_search, name='test_search'),
path('', views.search, name='search'),
]
forms.py:
class SearchForm(forms.Form):
query = forms.CharField(label='Search', max_length=200)
база шаблона. html:
<html>
<head>
</head>
<body>
<form method="GET" action="/search/">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{% block content %}{% endblock %}
</body>
</html>
результаты шаблона. html:
{% block content %}
{% results %}
{% endblock content %}