我一直在使用python和nltk开发一个机器人,它可以在命令行上运行。现在我想使用网页捕获输入,我将逻辑转移到Django。 我将使用一个更简单的例子来证明我遇到的问题。
在我的index.html中,我让用户在单个输入框中输入问题,点击发送后,视图只返回他们输入的内容:他们的问题'并且回答'在输入框下方。 问题是,当他们输入一个新问题时会覆盖前一个问题,但我希望新问题和答案显示在上一个问题的下方,如聊天帖子中所示。
如果你不理解我的意思,我会使用图像。
发生这种情况: when the user enters first chat message. 然后 when the user enters second chat message.
我想要的是: to have both of them as a thread and not two overwriting one
我刚刚开始在这个项目中使用Django,而使用cmd时我可以使用
while True:
我对如何使用Django中的视图和模板感到有些困惑。
这是我的index.html模板
<!DOCTYPE html>
<html>
<head>
<title>Tedbot</title>
</head>
<body>
<div>
<h1>Hello, I'm Tedbot</h1>
<p>I'll help you join aBc University</p>
</div>
<div>
<strong>{{ boldmessage }}</strong>
</div>
<div>
<form name='form' action="{% url 'index' %}" method="POST"> {% csrf_token %}
<input type="text" name="question"/>
<input type="submit" name="send" value="send">
</form>
</div>
<div>
{{question}} <br />
{{ answer }}
</div>
</body>
</html>
我的forms.py
from django import forms
class ReturnAnswer(forms.Form):
question = forms.CharField(max_length=200)
我的views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import nltk
import sklearn
from django.shortcuts import render
from django.http import HttpResponse
from tedbot.forms import ReturnAnswer
# Create your views here.
def index(request):
answer = "Something"
question = "Something else"
if request.method == 'POST':
myform = ReturnAnswer(request.POST)
if myform.is_valid():
question = myform.cleaned_data['question']
answer = myform.cleaned_data['question']
else:
myform = ReturnAnswer()
#context_dict = {'boldmessage': "Sum messages"}
return render(request, 'tedbot/index.html', {"answer": answer, "question":question})
非常感谢任何指针。
答案 0 :(得分:0)
当您点击一个视图时,您必须将您的问题和答案存储在数据库中,该视图会始终发送最后一个问题并回答模板。
然后当您的数据在数据库中时,您只需获取所有问题和答案并将其发送到模板并使用{%for%}显示