Helpers - компьютеры, интернет, программирование

Python Django Получение пользовательского ввода

Я настраиваю простую html-страницу, страница фиксирует информацию, введенную пользователем, и на основе введенной пользователем информации создает новую страницу. Проблема в том, что я не могу вернуть информацию, введенную пользователем при поддержке, и я не понимаю, где я ошибаюсь.

Мой файл представлений настроен следующим образом:

def suggestion(request):  
    if request.method == 'POST':
        form = BusinessName(request.POST)
        if form.is_valid():
            data=form.cleaned_data  
            context = insert_function_here(data)
            return render( request,'mainpage.html', context)
    else:
        form = BusinessName()  
        context = {'form':form}
        return render( request,'mainpage.html', context) 

Мои формы.py настроены следующим образом:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.HiddenInput(), required = False)

Соответствующая часть моего html настроена следующим образом:

<form id="user_input_form" method="post" action="http://127.0.0.1:8000/textinsighters/suggestion">
    Enter Your Business Name : <input type="text" list="browsers" name="browser" id="user_input">
    {% csrf_token %}
    {{ form }}
      <datalist id="browsers">
        <option value="Internet Explorer">
        <option value="Firefox">
        <option value="Chrome">
        <option value="Opera">
        <option value="Safari">
      </datalist>
      <button onclick="myFunction()">Submittt</button>
</form>
<script>
    function myFunction() {
document.getElementById("id_business_name").value = document.getElementById("user_input").value;                                            
document.getElementById("user_input_form").submit();
    }
</script>

Мне нужен список автозаполнения, поэтому я создаю форму в html. Я получаю пользовательский ввод, устанавливаю значение поля формы Django в значение, введенное пользователем, и отправляю его. Я должен что-то вернуть, но переменная «данные» в представлениях не содержит пользовательский ввод.

Спасибо

01.06.2016

Ответы:


1

Вы используете form.HiddenInput() в качестве виджета, а затем сами добавляете поле формы. Это так не работает. Что, если вы измените класс поля на TextInput:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.TextInput())

Если вы хотите добавить пользовательские атрибуты в виджет, это можно сделать, предоставив словарь attrs:

class BusinessName(forms.Form):
    business_name = forms.CharField(widget = forms.TextInput(attrs={
        'list': 'browser'
    }))

Или вы можете взглянуть на пакет django-widget-tweaks, чтобы добавить атрибуты в шаблоне.

01.06.2016
  • Спасибо, работает отлично. Можно ли определить список в файле forms.py или его необходимо определить в html? мой список будет большим, около 100 вариантов, и поэтому мне нужна функция автозаполнения. или есть лучший способ реализовать это? 03.06.2016
  • Если ваш список может увеличиться, одним из способов приблизиться к этому будет создание вместо этого form.CharField() и использование источника API для поиска, который заполняет это поле. До 1000 опций Python/Django должны легко управляться, но помимо этого поисковый API был бы интересен. Если ответ помог вам, не стесняйтесь голосовать и принимать его :-) 03.06.2016
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..