尝试使用python和Bootstrap表单在MongoDB中更新/添加新项时发布错误500

2024-04-25 09:12:49 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我是新来的,我正在尝试用python(包括Jinja模板)和我的html引导表单更新(或插入upsert)一个名为“faq”的项目到MongoDB。我一直收到一个POST 500服务器错误,只希望能够在MongoDB中成功地更新/上传一个文档。我使用的是Mongo2.6和Python3.4-任何帮助都将不胜感激

我的引导窗体/html如下所示:

<form role="form" action="" method="POST">
   <div class="form-group">
       <label for="category">Category (select one):</label>
       <select class="form-control" id="category" name="category">
            {% for one in catList %}
            <option>{{ one }}</option>
            {% endfor %}
       </select>
   </div>

   <div class="form-group">
       <label for="question">Question:</label>
       <input type="text" class="form-control" id="question" name="question"/>
   </div>

   <div class="form-group">
       <label for="answer">Answer:</label>
       <textarea class="form-control" rows="5" id="answer" name="answer"></textarea>
   </div>

   <div class="form-group">
       <label for="ordinalNum">Ordinal Number</label>
       <input type="text" class="form-control" id="ordinalNum" name="ordinalNum">
   </div>
   <p>This is used to determine the order in which questions are displayed.</p>
   <br /><br />
   <input type="submit" name="Submit" value="Submit" id="Submit" class="btn btn-primary" />
</form>

我的python如下:

@app.route('/faqtemp', methods=['GET', 'POST'])
@nocache
def faqtemp():
"""Renders the faqtemp page."""
user = g.user

cat = Category.objects.filter(isDeleted=False)

catList = {}
for thing in cat:
    if thing.category not in catList:
        catList[thing.category] = thing.ordinalNum
catList = sorted(catList, key=lambda key: catList[key])

links = []
for name in catList:
    name = name.replace(" ", "")
links.append(name)

stuff = FAQ.objects.filter(isDeleted=False)

if request.method == 'GET':
    return render_template('faqtemp.html',
        title='faqtemp',
        message='practice',
        catList=catList,
        stuff=stuff,
        user = user,
        year = datetime.now().year)

elif request.method == 'POST':
     # read form data and save it
    category = request.form['category']
    question = request.form['question']
    answer = request.form['answer']
    ordinalNum = request.form['ordinalNum']

    aFAQ = FAQ(userUUID=user, category=category, question=question, answer=answer, ordinalNum=ordinalNum)
    aFAQ.save()
    #FAQ.update(category, question, answer, ordinalNum, user)

    return render_template('faqtemp.html',
        title='faqtemp',
        message='practice',
        catList=catList,
        stuff=stuff,
        user = user,
        year = datetime.now().year)

else:
    return("<h2>Invalid request</h2>")

我用python为一个常见问题创建了一个类文档:

from mongoengine import *
import datetime

class FAQ(Document):
    question = StringField(required=True)
    answer = StringField(required=True)
    category = StringField(required=True)
    ordinalNum = IntField(required=True)
    isDeleted = BooleanField(required=True, default=False)
    userUUID = StringField(required=True)
    createTS = DateTimeField(required=True, default=None)

def __init__(self, *args, **kwargs):
    Document.__init__(self, *args, **kwargs)
    if not self.createTS:
        self.createTS = datetime.datetime.utcnow()

# def get(self):

def delete(self):
    self.isDeleted = True
    self.save()

def update(self, category, question, answer, ordinalNum, user):
    self.category = category
    self.question = question
    self.answer = answer
    self.ordinalNum = ordinalNum
    self.isDeleted = False
    self.userUUID = user
    self.createTS = datetime.datetime.utcnow()
    self.save()

Tags: answernameselfdivformtrueforlabel

热门问题