0

URL の id パラメータを使用してレコードを編集し、「elif 'id' in request.GET:」が使用されている場合、レコードは更新されませんが、新しい行が作成されます。

@login_required
def login_save_page(request):
    if request.method == 'POST':
        form = LoginSaveForm(request.POST)
        if form.is_valid():
            # Create or get login.
            login1 = _login_save(request, form)
            return HttpResponseRedirect(
                                        '/user/%s/' % request.user.username
                                       )
    elif 'id' in request.GET:
     id2 = request.GET['id']
     name=''
     url=''
     Login_username =''
     notes= ''
     password=''
     try:
        login1 = login.objects.get(
                                   id = id2,
                                   username=request.user
                                  )
        name = login1.name
        url = login1.loginUrl
        Login_username = login1.login_username
        notes = login1.notes
        password = login1.password
     except (login.DoesNotExist):
      pass
     form = LoginSaveForm({
        'id': id2,
        'name': name,
        'url': url,
        'Login_username': Login_username,
        'notes': notes,
        'password': password
     })
    else:
        form = LoginSaveForm()
    variables = RequestContext(request, {
                                   'form': form
                                             })
    return render_to_response('login_save_page.html', variables)
4

1 に答える 1

0

フォームが経由で送信されていると想定しているPOSTため、必要なときに(ユーザーがフォームを送信したときに)elif「get」が起動することはありません。

if request.method == 'POST'そのロジックをブロック内に配置する必要があります。

その「elif」ブロックがいつトリガーされるかを考えてください。リクエスト メソッドが not の場合のみPOST、つまりページの読み込み時のみ。

于 2012-10-22T20:38:52.873 に答える