Уведомления

Группа в Telegram: @pythonsu

#1 Июль 13, 2017 10:53:19

stas90
Зарегистрирован: 2017-05-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по форама

Всем привет!

Делаю простенький сайт, если это можно так назвать с английскими словами.
Идея такая: добавляется слово, перевод. Потом переходим в режим тест и тут два варианта на которых я споткнулся:

Выводится английское слово и textfield для русского слова, человек вводит русское слово, если оно введено верно - подается следующее слово. Слова выбираются рандомно.
Устроено так: если request.method != POST -> из views в temlate выдается переменная word,
отображается как Label, и при вводе слова в textfield оно возвращается во views.
Вопрос, как можно теперь проверить правильно ли введено слово?
Можно ли как-то передать значение index списка в template и потом обратно во views?

И еще вопрос, можно ли сделать свою форму вроде такой:
англ слово (label) - нужно ввести перевод
нужно ввести англ слово - русское слово (label)
нужно ввести англ слово - русское слово (label)
англ слово (label) - нужно ввести перевод
Как потом отправить эти результаты во views и проверить правильность


 def learn(request):
    words = {}
    words = Words.objects.all()
   
    randIndex = 0
    randIndex=random.randint(0, times - 1)
    word = ""
    if request.method == "POST":
        form = SearchForm(request.POST)
        if form.is_valid():
            checkWords=form.save(commit=False)
            
            
            return render(request, 'index/learn.html', {'checkWords':checkWords, 'rand':rand, 'randIndex':randIndex, 'form':form, 'words':words})
       
    else:
        form = SearchForm()
        word = words[randIndex]
        print (word)
    return render(request, 'index/learn.html', {'form':form, 'word':word})

Спасибо за ответы, прошу сильно не пинать, я новичок.

Для наглядности: http://isnot.ru/

Отредактировано stas90 (Июль 13, 2017 11:05:26)

Офлайн

#2 Июль 13, 2017 12:28:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос по форама

stas90
Можно ли как-то передать значение index списка в template и потом обратно во views?
Не надо оперировать индексами, надо оперировать Id записи.



Офлайн

#3 Июль 13, 2017 12:31:36

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос по форама

stas90
Как потом отправить эти результаты во views и проверить правильность
Что значит “отправить результаты во views”. Ваша форма обрабатывается внутри представления, именно там вы создаете объект этой формы. Просто работайте с этим объектом, не надо никуда ничего передавать.



Офлайн

#4 Июль 13, 2017 12:53:42

stas90
Зарегистрирован: 2017-05-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по форама

FishHook
Не надо оперировать индексами, надо оперировать Id записи.
А как это сделать?

Может быть мне нужно использовать hidden input?

В froms.py добавил
 class SearchForm(forms.ModelForm):
    secretWord = forms.CharField(widget=forms.HiddenInput(), required=False)
    class Meta: 
        model = Words 
        fields = ('russ','secretWord',)

в learn.html:
 <form method="POST" align="center"> {% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.russ.errors }}
<label for="{{ form.russ.id_for_lable }}"> {{ word }} - </label>
{{ form.russ }}
<input type="hidden" id="id_secretWord" name="secretWord" value={{word}}></input>
<button type="submit">Check</button>
</div>
</form>
{{ checkWords.russ }}
{{ checkWords.secretWord }}


но почему-то secretWord все равно получить не могу

Офлайн

#5 Июль 13, 2017 13:09:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопрос по форама

stas90
А как это сделать?
Ну блин, у каждой записи в БД есть уникальный идентификатор Id, которому точно будет соответствовать одно слово в вашем словаре. Извлечь из БД слово и сравнить с тем, что ввел юзер. Что конкретно вам тут непонятно?



Офлайн

#6 Июль 13, 2017 13:50:03

stas90
Зарегистрирован: 2017-05-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по форама

Не подскажите, почему secretWord не отображается после отправки введеной формы ?

Офлайн

#7 Июль 14, 2017 04:00:23

stas90
Зарегистрирован: 2017-05-04
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопрос по форама

С secretWord разобрался, оно не отображалось, т.к. не было добавлено в модель, было добавлено только в forms.py

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version