通过Google App Engine在Django表单中添加多个文本输入

3 投票
1 回答
522 浏览
提问于 2025-04-16 17:05

目标:创建一个问题,让用户可以生成一个“填空”风格的投票问题(比如:“如果她不和_(文本)__约会,你会和她调情吗?”)。

代码:这个文件创建了一个与appengine实体对应的django表单。

from django import newforms as forms
import models
from google.appengine.ext.db import djangoforms


class PollForm(djangoforms.ModelForm):
    class Meta:
        model = models.Poll

这是models.py文件中的一段摘录

from google.appengine.ext import db
from django import newforms as forms

class Poll(db.Model):
    question = db.StringProperty()
    created_on = db.DateTimeProperty(auto_now_add = 1)
    created_by = db.UserProperty()

def __str__(self):
    return '%s' %self.question

def get_absolute_url(self):
    return '/poll/%s/' % self.key()

这是这个部分的html代码

<form action="." method="post">

{{pollform.as_p}}

{% for form in choiceforms %}
    {{form.as_p}}
{% endfor %}

<input type="submit" name="createpoll" value="createpoll" />
</form>

有没有简单的方法可以创建这样的问题,里面有一些预先写好的文本和一些需要用户输入的文本?我可以直接在HTML中写死这些内容吗?

非常感谢任何指引!

1 个回答

0

我还是不太明白你的问题。如果你能把完整的代码和你想要的结果示例发上来,那样会得到更好的回答。

这里有一个例子,展示如何构建一个表单,让别人来回答这个问题。我把问题写死在代码里了,但你可以很容易地动态获取这个问题。

class Answer(models.Model):
    answer1 = models.CharField(max_length=100)
    answer2 = models.CharField(max_length=100)

class AnswerForm(forms.ModelForm):
    class Meta:
        model = Answer

def test(request):
    if request.method == 'GET':
        form = AnswerForm()
        question_template = 'Would you fool around with %s if she wasn\'t dating %s?'
        html = question_template % (form['answer1'], form['answer2'])
        params = {'form': form,
                  'html': html}
        return render_to_response('test.html',
                                  params,
                                  context_instance=RequestContext(request))

模板:

<form method="post" action="">
    {% csrf_token %}
    {% for hidden in form.hidden_fields %}
        {{ hidden }}
    {% endfor %}

    {{ html|safe }}

    <input type="submit" value="Save"/>
</form>

撰写回答