如何从url中删除参数

时间:2017-10-15 00:13:53

标签: django python-3.x

我需要通过单击按钮生成密钥并显示生成的密钥。 我的观点在这里:

@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>
	{% for created_key in created_keys %}
		<p>{{created_key.key}}</p>
		<p>{{created_key.for_whom}}</p>
	{% 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中删除这些参数,但不明白如何。

1 个答案:

答案 0 :(得分: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, })

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/