我是Django的新手!
我正在做一个简单的注册表单,当它提交时,它会返回一个标签到上一页,即主页面:
表单提交如下:
<form method="post"">
它映射在urls.py:
url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm')
所有urls.py文件:
app_name = 'SSO_Management_POC'
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^user/$', views.user, name='user'),
url(r'^userfilt/$', views.userfilt, name='userfilt'),
url(r'^userfilt/insertForm/$', views.insertForm, name='insertForm'),
#url(r'^updateForm/$', views.updateForm, name='updateForm'),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]
所以相关的“def”叫它:
def insertForm(request):
if request.method == 'POST':
#some stuff here
#sending the get parameter to the main page:
return redirect('/SSO_Management_POC/userfilt/?label=User Registered!')
现在我想继续工作,我会在输入中放一个过滤器,然后在代码下方执行搜索:
if request.method == 'POST':
form = UserForm(data=request.POST)
val = request.POST.get('my_textarea')
return render(request, 'SSO_Management_POC/userfilt.html', {'top_user': TopUser.objects.filter(user_name__regex=val)})
正如你所看到的那样是一个POST调用,但问题来了,GET参数仍然存在,所以这导致
显然我不再想要那里的标签,它应该在另一次电话后消失......
网址仍然如下:
http://127.0.0.1:8000/SSO_Management_POC/userfilt/?label=User%20Registered!
现在,我知道我可以通过解决方法前端解决这个问题,但我想知道:
答案 0 :(得分:1)
问题是您的action=""
标记中没有form
,这意味着您要发布到现有网址,包括任何查询字符串(即现有GET
参数)。
只需将action=""
添加到form
标记,例如:
<form method="POST" action="{% url 'insertForm' %}">