Я новичок в Django и веб-разработке. Сейчас моя цель - создать интерфейс, похожий на Google, взять текст из окна поиска и записать его в файл (другими словами, просто хочу получить доступ к текстовым данным в поле поиска). Я создал страницу поиска, как показано ниже

< Сильный > search.html

{% extends "header.html" %}
{% block content %}
    <div style="display: flex; justify-content: center;">
        <img src="/static/images/logo.jpg" class="responsive-img" style='max-height:300px;' alt="face" >
    </div>

<form  method="get" action="">
    {% csrf_token  %}
    <div style="display: flex; justify-content: center;">
        <input type="text" name="query" placeholder="Search here..." required size="70" >
        <button type="submit">Go!</button>
    </div>
    <button type="submit">Search</button>
</form>
{% endblock %}

views.py

from django.shortcuts import render

def index(request):
    return render(request, 'search.html')

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index')
]

Пожалуйста, дайте мне подсказку / пример, как двигаться дальше? Спасибо.

0
muazfaiz 1 Янв 2018 в 21:43

2 ответа

Лучший ответ

Ваше поле поиска выглядит так:

<input type="text" name="query">

Имя входа - query. Поскольку это форма GET, вы, должно быть, заметили, когда отправляете ее, URL-адрес выглядит примерно так:

/?query=<value of the input>

Часть после ? называется строкой запроса. Для каждого запроса Django поддерживает словарь строки запроса. У объекта request есть словарь под названием GET для запросов GET. Если вы сделаете запрос POST, Django сохранит данные формы в dict под названием POST.

Чтобы получить доступ к значению строки запроса в Django, вы можете сделать это:

query = request.GET.get('query')

Если это запрос POST, вы должны сделать то же самое, но на этот раз использовать словарь POST:

some_value = request.POST.get('some_key')

Полную документацию по этому вопросу можно найти по адресу - Объекты запросов и ответов.

1
xyres 1 Янв 2018 в 19:04

Это должно сделать это

views.py

def index(request):
    query = request.GET.get('query')
    # do a check here to make sure search_term exists before attempting write
    with open('/path/to/file', 'rw') as f:
        f.write(query)

    return render(request, 'search.html')
1
domino 1 Янв 2018 в 18:59