重定向后-有没有办法从Django中的URL中删除表单字段?
发送表单后,我将被重定向到另一个页面 该页面的URL将包含URL+表单字段名称+表单字段值 是否有一种方法可以重定向(或者在不重定向的情况下操作数据),使URL不会显示表单字段的名称和值 我的项目(无应用程序): url.py重定向后-有没有办法从Django中的URL中删除表单字段?,django,django-forms,django-views,Django,Django Forms,Django Views,发送表单后,我将被重定向到另一个页面 该页面的URL将包含URL+表单字段名称+表单字段值 是否有一种方法可以重定向(或者在不重定向的情况下操作数据),使URL不会显示表单字段的名称和值 我的项目(无应用程序): url.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^translate/', views.tr
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^translate/', views.translate, name='translate'),
]
views.py
from django.shortcuts import render
def home(request):
return render(request, 'hello.html')
def translate(request):
original = request.GET['originaltext'].lower()
translation = ''
for word in original.split():
if word[0] in ['a','e','i','o','u']:
translation += word
translation +='yay '
else:
translation += word[1:]
translation += word[0]
translation += 'ay '
return render(request, 'translate.html', {'original':original,
'translate':translation})
hello.html
<h1> heading title </h1>
<form action="{% url 'translate' %}">
<input type="text" name="originaltext"/>
<br/>
<input type="submit" value="Translate" />
</form>
标题标题
translate.html
{{ original }} <br>
{{ translate }}
<br><br>
<a href="{% url 'home' %}">Home</a>
{{original}}
{{translate}}
因此,每当我发送表单时,我都会被重定向,URL变成:
可能尝试从您的表单发送POST请求:
<form action="{% url 'translate' %}" method="POST">{% csrf_token %}
<input type="text" name="originaltext"/>
<br/>
<input type="submit" value="Translate" />
</form>
您可以使用
return redirect('urlname')
而不是render,您也在使用request.GET.@VijeshVenugopal,“您也在使用request.GET”是什么意思?我应该移除它吗?现在使用重定向,我得到一个错误-MultiValueDictKeyError在/translate/translate.htmlWhere执行重定向?您正在接收作为GET参数的参数,这就是您被重定向到上述url的原因。您可以做的一件事是在当前视图之后重定向到主页,或者将代码设置为'request.GET.GET('originaltext',None).lower()。您必须以html呈现表单,并在同一视图中提交表单。您试图在translate视图中对表单进行的操作应该放在主视图内部。操作完成后,如果你想重定向,你可以在主视图中进行重定向。这很有效!你能解释一下你在那里做了什么吗?最初你是以GET的形式发送请求的。我是以邮递方式寄来的。GET请求公开url中的参数,而POST不公开。在我看来,我确保POST请求得到了正确处理。
def translate(request):
context = {}
if request.method == 'POST':
original = request.POST.get('originaltext').lower()
context['original'] = original
translation = ''
for word in original.split():
if word[0] in ['a','e','i','o','u']:
translation += word
translation +='yay '
else:
translation += word[1:]
translation += word[0]
translation += 'ay '
context['translation'] = translation
return render(request, 'translate.html', context)