【发布时间】:2017-12-06 06:30:27
【问题描述】:
发送表单后,我被重定向到另一个页面。
该页面的 URL 将包含 URL + 表单字段名称 + 表单字段值。
有没有办法以 URL 不显示表单字段名称和值的方式重定向(或者可能在不重定向的情况下操作数据)?
我的项目(没有应用程序):
urls.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})
你好.html
<h1> heading title </h1>
<form action="{% url 'translate' %}">
<input type="text" name="originaltext"/>
<br/>
<input type="submit" value="Translate" />
</form>
翻译.html
{{ original }} <br>
{{ translate }}
<br><br>
<a href="{% url 'home' %}">Home</a>
所以每当我发送表单时,我都会被重定向并且 URL 变为:
【问题讨论】:
-
您可以使用
return redirect('urlname')代替 render 并且您也在使用 request.GET。 -
@VijeshVenugopal,“你也在使用 request.GET”是什么意思?我应该删除它吗?现在使用重定向我收到一个错误 -MultiValueDictKeyError at /translate/translate.html
-
你在哪里做重定向?
-
您正在接收作为 GET 参数的参数,这就是您被重定向到上述网址的原因。您可以做的一件事是在当前视图之后重定向到主页或将代码设置为 `request.GET.get('originaltext', None).lower()。
-
您必须在 html 中呈现表单并在同一视图中提交表单。您尝试在翻译视图中进行的表单操作应该进入主视图本身。操作后,如果您想进行重定向,您可以在主视图中进行。
标签: django django-forms django-views