Попытка отобразить вывод из пользовательского ввода на тот же HTML-экран - PullRequest
0 голосов
/ 31 октября 2019

Я уверен, что это не сложно, я просто новичок в Django и буду очень признателен за некоторую помощь.

Я пытался получить два ввода (переменная «предложение» и «слово»переменная) как CharFields. Затем возьмите эти два входа и создайте новый выход с ними. Я могу заставить это печатать на консоли, но не показывать это на странице html.

Спасибо. Вот что я получил.

-> form.html

    <div class="main">
        <div class="container">
            <div class="row">
                <form class="content" method="post">
                    {% csrf_token %}
                    {{ form }}
                    {% if output %}
                        <h3>{{ output }}</h3>
                    {% endif %}
                    <input type="submit" name="submit_cmd" value=Run />
                </form>
            </div>
        </div>
    </div>        

-> views.py

from django.shortcuts import render
from django.http import HttpResponse
from .forms import ContactForm
import subprocess as sp

import nltk
from nltk.corpus import wordnet
nltk.download('wordnet')

def contact(request):
    syn = set()
    output = ""
    form = ContactForm()

    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():

            sentence = form.cleaned_data['sentence']
            word = form.cleaned_data['word']

            for synonym in wordnet.synsets(word):
                for l in synonym.lemmas():
                    if l.name() != word:
                        syn.add(l.name().lower())

            for new_wrd in list(syn):
                print(sentence.replace(word, new_wrd))
                output += sentence.replace(word, new_wrd)


    return render(request, 'pk_app/form.html', {'form': form})

-> forms.py

from django import forms

class ContactForm(forms.Form):
    sentence = forms.CharField(required=True)
    word = forms.CharField(required=True)

1 Ответ

0 голосов
/ 31 октября 2019

Вы создаете переменную output, но никогда не присоединяете ее к контексту, который требует возврата к шаблону.

return render(request, 'pk_app/form.html', {'form': form, 'output': output})

Также: Вы уверены, что он принадлежит в элемент формы HTML?

...