2017-10-15 173 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/密鑰生成頁面上,但現在我在http://127.0.0.1:8000/get_registration_key/?for_whom=&create_new_key=Create# ,所以刷新這個頁面會產生更多的鍵。 我真的需要從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, 
     })