在 Flask 中获取当前用户 ID

Ser*_*lov 5 python flask flask-login flask-wtforms

我对 Python 还是很陌生(老实说,一般来说,编程)。我目前正在制定一种待办事项清单,我需要它来将待办事项放入适当的课程中(这都与教育相关)。所以,问题很简单。我将此作为 Flask 驱动的路线:

@app.route('/add_course', methods=('GET', 'POST'))
@login_required
def course():
    form = forms.CourseForm()
    if form.validate_on_submit():
        models.Course.create(teacher=g.user._get_current_object(),
                             name=form.name.data.strip(),
                             difficulty=form.level.data.strip(),
                             description=form.description.data.strip())
        flash("Course successfully created!", "success")
        return redirect(url_for('index'))
    return render_template('add_course.html', form=form)
Run Code Online (Sandbox Code Playgroud)

然后我把这个放在forms.py. 你可以看到我用聪明的标记来表明我的问题在哪里。它说THE_PROBLEM

def courses():
    try:
        courses = models.Course.select(models.Course.id,
                                   models.Course.name,
                                   models.Course.difficulty).where(THE_PROBLEM)
        course_list = []
        for course in courses:
            course_list.append((str(course.id), course.name + ' - ' + course.difficulty.title()))
        return course_list
    except models.DoesNotExist:
        return [('', 'No courses')]


class ToDoForm(FlaskForm):
    name = StringField("What's up?", validators=[
    DataRequired()
    ])
    due_date = DateTimeField('When?', format='%Y-%m-%d %H-%M')
    course = SelectField('Course', choices=courses())
    priority = SelectField('Priority',
                           choices=[('high', 'High priority'),
                                    ('medium', 'Normal priority'),
                                    ('low', 'Low priority')],
                           validators=[
                               DataRequired()
                           ])
    description = TextAreaField('Description')
Run Code Online (Sandbox Code Playgroud)

所以,是的,我在找的是谁是当前登录的,我用这个功能来传递所有者的ID(老师在这个情况下)的方式courses()来构建一个元组的列表中字段的选择属性courseToDoForm. 我需要将当前登录的老师的 id 传递给这个函数,以便它可以评估这个通过的老师是否有任何与他的 id 匹配的课程。我尝试使用current_user._get_current_object()和其他任何东西,但它只会给我带来大量错误。

任何帮助、建议或建议将不胜感激。我真的希望我在这里所说的(以及我想要实现的)是可以理解的

Ser*_*lov -7

如果有人遇到同样令人沮丧的问题,解决方案非常简单。将外部类包装到函数中,并将所需的变量作为参数传递,然后随心所欲地使用它们。只是不要忘记返回该类的实例。