2017-10-15 77 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, 
     })