K D*_*awG 1 python django http-post python-2.7
我有HttpResponseRedirect()
构造所需网址的函数:
我的create
观点:
def create(request):
entry = Char_field(field=request.POST['record'])
entry.save()
return HttpResponseRedirect(reverse('db:index_page',kwargs={'redirected':'true'}))
Run Code Online (Sandbox Code Playgroud)
HttpResponseRedirect()
重定向到的视图是:
def index(request):
redirected = False
template= 'app/index.html'
try:
if request.POST['redirected'] is 'true':
redirected = True
except:
pass
return render(request,template,{'redirected':redirected})
Run Code Online (Sandbox Code Playgroud)
但是它返回一个错误:
NoReverseMatch at /app/create/
Reverse for 'index_page' with arguments '()' and keyword arguments '{'redirected': 'true'}' not found.
Run Code Online (Sandbox Code Playgroud)
urlpatterns = patterns('',
url(r'^$',views.index,name='index_page'),
url(r'^get_record/$',views.get_record,name='get_record'),
url(r'^create/$',views.create_html,name='create_path'),
url(r'^add/$',views.create,name='add_record')
)
Run Code Online (Sandbox Code Playgroud)
为什么会这样,是否可以通过函数将POST
数据发送到index_page
视图reverse()
?
这个问题实际上与 POST 数据无关。您只是尝试使用参数进行反向操作,但 for 的 URLindex_page
不带参数。无论您是否想要 POST 到该 URL,这都是正确的。
然后,当然,您实际上并没有POST 到该 URL,您只需返回 HttpResponseRedirect,它执行 302 重定向。
我不确定为什么您认为在 POST 中需要此参数。如果你不想把它放在 URL 模式中,为什么不只放在 GET 参数中呢?
url = reverse('db:index_page') + '?redirected=true'
return HttpResponseRedirect(url)
Run Code Online (Sandbox Code Playgroud)
并在接收视图中:
redirect = request.GET.get('redirected')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2431 次 |
最近记录: |