Изменение вывода из формы текстовой области на основе значений из переключателей в Django - с чего начать? - PullRequest
0 голосов
/ 03 июня 2019

Я довольно новичок в Джанго. Я написал программу анализа текста, которую мне недавно удалось развернуть онлайн. Программа принимает текстовый ввод и подсчитывает вхождение слов во входные данные в соответствующем списке, а затем возвращает оценку по нескольким различным переменным.

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

В качестве примера, скажем, мои категории "Мясо, фрукты, овощи, алкоголь". Пользователь предоставляет список товаров из магазина, а программа возвращает оценку того, сколько предметов принадлежит каждой категории.

В этом примере я хочу, чтобы пользователь мог также решить (с помощью переключателей), хочет ли он / она большое, среднее или низкое количество какой-либо из этих категорий продуктов. Затем я хочу, чтобы программа указала на любые расхождения в выводе.

Основная проблема у меня в том, что я не знаю, с чего начать. Я пытался найти много вариантов этого вопроса, но ответы, которые появляются, всегда включают много жаргона и / или терминологии, с которой я не знаком. Точно так же я попытался загрузить проект приложения викторины из github для обратного инжиниринга, но я полностью ошеломлен. Даже несмотря на все мои усилия, я не могу даже отобразить переключатели, когда пытаюсь соединить их с формой:

из HTML-шаблона:

<form action="" method="POST" novalidate>
    {% csrf_token %}
    {% for choice in choices %}
        <input type="radio" name="fruit" style="margin-left: 300px" value="test1" checked> Low
        <input type="radio" name="fruit" style="margin-left: 900px" value="test2" checked> High<br>
    {% endfor %}
    <br>
</form>

из views.py:

def selector(request):
if request.method == 'POST':
    form = Selector(request.POST)
    if form.is_valid():
        cd = form_cleaned_data['profile']
    return render(request, 'app/selector.html', {'form': form})
return render(request, 'app/selector.html')

из форм.py

SCORES = [('low','Low'),]

class Selector(forms.Form):
    ranking = forms.ChoiceField(choices=SCORES, widget = 
forms.RadioSelect)

Я мог бы легко написать это на Python как настольную программу, но объем информации, которую я получаю, когда пытаюсь найти решение, просто ошеломляет. Я чувствую, что мне нужно было бы пошаговое руководство по созданию аналогичного веб-приложения (например, викторина, которая даст вам другой вывод в зависимости от выбора переключателей), но мне кажется, что я ничего не могу найти как бы я ни выглядел. Учебник, который предполагает, что я ничего не знаю и описывает даже элементарные термины, был бы идеальным, но все помогает.

С чего мне начать? Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 04 июня 2019

Я не совсем уверен в том, что вы пытаетесь сделать, но это должно помочь вам отобразить ваши переключатели и обеспечить приличную компоновку для обработки отправляемых данных.Надеюсь, он вам пригодится

template.html

<form action="" method="POST" novalidate>
    {% csrf_token %}
    {% for radio in form.ranking %}
        {{ radio }}
    {% endfor %}
    <br>
    <input type="submit" value="send">
</form>

views.py

def selector(request):
    if request.method == 'POST':
        form = Selector(request.POST)
        if form.is_valid():
            form.process()  # see forms.py
        return render(request, 'app/selector.html', {'form': form})
    else:
        form = Selector()
        return render(request, 'app/selector.html', {'form': form})

forms.py

SCORES = [('low','Low'),]

class Selector(forms.Form):
    ranking = forms.ChoiceField(choices=SCORES, widget=forms.RadioSelect())

    def process(self):
        cd = self.cleaned_data
        # process data here (cd)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...