重定向后-有没有办法从Django中的URL中删除表单字段?

重定向后-有没有办法从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

发送表单后,我将被重定向到另一个页面

该页面的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.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)