2016-12-12 24 views
1

私はPythonには全く新しいです(そして、正直なところ、一般的にはプログラミングです)。私は現在、To-Doリストを作成しています。必要なものを適切なコースに組み込む必要があります(すべて教材に関連しています)。だから、問題はかなり単純です。私はフラスコ駆動ルートとしてこれを持っています:現在のユーザーIDを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) 

次にこれはforms.pyにあります。あなたは私の問題がどこにあるかを示すために置いた巧妙なマークを見ることができます。それはそう、ええ、私は何を探していますが、現在ログインしている所有者(この非常に場合は教師)のIDを渡す方法です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') 

言います。私が構築するために、この機能courses()を使用しますフィールドcourseのchoices属性のタプルのリストをToDoFormに設定します。私は現在ログインしている先生のIDをこの関数に渡す必要があります。そのため、渡された先生に自分のIDと一致するコースがあるかどうかを評価できます。私はcurrent_user._get_current_object()とそれ以外のものを使用しようとしましたが、それはちょうど私に多量のエラーを引き起こしました。

何か助けやアドバイスをいただければ幸いです。私がここで言うこと(と私が達成したいこと)が理解できることを本当に願っています。

+0

ユーザーがログインしたときに何が起こっているのかについては言及していませんでしたが、ここで必要なのはセッション管理だと思われます。ユーザーがプロファイルにログインするときは、データベース内で比較する必要があります。成功すると、ユーザーセッションが開始され、ここからユーザーが興味のある初期値(この場合はユーザーID)を保存できます。これは正しいと思いますか? –

+0

まあ、私はこれは自明ではないと確信しています。そのために残念。さて、私は、上記の最初のコードブロックとして与えられた私のapp.pyとForms.py(コードの2番目のブロック)の私のフォームでインスタンス化されたLoginManagerを持っています。すべて正常に動作し、問題はありません。私はちょうど別の質問に手を入れたかった。現在のユーザーのIDをどうやって提供するの?言い換えれば、「SELECT name、難易度from where teacher_id = **現在ログインしているユーザー**」のようなクエリを作成したいと思っています。これは、この評価プロセスがforms.pyではなくapp .py。 –

+3

@SergeyOrlov - 'From flask_login import current_user' – pjcunningham

答えて

-3

誰かが同じばかげた質問を思いつく場合、解決策はかなり簡単です。外部クラスを関数にまとめ、必要な変数を引数として渡し、それをあなたの心臓のコンテンツに使用します。 クラスのインスタンスを返すことを忘れないでください。

関連する問題