2017-10-15 8 views
1

ボタンをクリックしてキーを生成し、生成したキーを表示する必要があります。 ここに私の見解:URLから引数を削除する方法

@user_passes_test(lambda u: u.is_superuser) 
def get_key(request): 
    if(request.GET.get('create_new_key')): 
     for_whom = request.GET.get('for_whom') 
     create_key(for_whom) 
    created_keys = RegistrationKey.objects.all() 
    return render(request, 'registration/get_key.html', { 
     'created_keys':created_keys, 
     }) 

テンプレート:

<!DOCTYPE html> 
 
<html> 
 

 
{% include "core/header.html" %} 
 

 
<body> 
 
<form action="#" method="get"> 
 
<input type="text" name="for_whom"/> 
 
<input type="submit" class="btn" value="Create" name="create_new_key"> 
 
</form> 
 
<ul> 
 
\t {% for created_key in created_keys %} 
 
\t \t <p>{{created_key.key}}</p> 
 
\t \t <p>{{created_key.for_whom}}</p> 
 
\t {% endfor %} 
 
</ul> 
 
</body> 
 
{% include "core/footer.html" %} 
 
</html>

今キーを生成しているが、今、私はhttp://127.0.0.1:8000/get_registration_key/?for_whom=&create_new_key=Create#でよhttp://127.0.0.1:8000/get_registration_key/私はページ上のボタンをクリックしていたときにこのページを更新すると、より多くのキーが生成されます。 私は本当にこの引数をURLから切り捨てる必要がありますが、どのように理解できません。

答えて

0

新しいキーは、クエリ文字列をクリアするために作成されたときは、同じビューにredirectにあなたのビューを変更する必要があり、かつrenderは何for_whom引数が存在しない場合にのみ:

@user_passes_test(lambda u: u.is_superuser) 
def get_key(request): 
    if request.GET.get('create_new_key'): 
     for_whom = request.GET.get('for_whom') 
     create_key(for_whom) 
     return redirect('get_key') # Use the name in your urls.py 
    else: 
     created_keys = RegistrationKey.objects.all() 
     return render(request, 'registration/get_key.html', { 
      'created_keys':created_keys, 
     }) 
関連する問題