我正在尝试检查用户输入的电子邮件ID是否存在于数据库表中,如果存在 - 我想路由到'prof.html'模板,否则只需在login.html模板中显示一条消息。< / p>
这两个条件都正常。
然而,问题是当我使用redirect()或render_to_response()时 - div,输入等目标模板元素会自动更改(在这种情况下为prof.html)?
我们还可以将上下文信息发送到目标模板吗? (在这种情况下,响应数据或来自数据库的任何对象并通过视图重定向到prof.html模板)
以下是我的代码:
Views.py
def verifyme(request):
if request.method == "POST":
emailid4loginV = request.POST['emailid4login_Aj']
else:
emailid4loginV = ''
response_data = ''
return HttpResponse(response_data, content_type="text/plain")
response_data = ''
if Employee.objects.filter(email = emailid4loginV).exists():
response_data='Thanks for waiting - login successful'
#return render_to_response('app/prof.html', { 'response_data':response_data},
# context_instance = RequestContext( request ) )
return redirect('/myprofile')
else:
response_data='Ouch! you are not a registered user!'
return HttpResponse(response_data, content_type="text/plain")
urls.py
url(r'^myprofile$', 'app.views.profile', name='profile'),
仅为了您的信息,“个人资料”视图会从表格中返回一些对象,并在模板app / prof.html中呈现。
我观察到目标模板在同一个login.html模板中呈现(如何?:在浏览器网址中,我没有看到myprofile - 但是登录的那个)但是当我通过进入网站手动请求myprofile时url(localhost:xxxxx / myprofile),它完美无缺:(
在login.html中提交请求之前的网址:
在login.html中提交请求后的URL - myprofile呈现在同一页面中:
当我手动输入网址时,模板才能完美运行..
你能告诉我这可能是什么问题吗?
修改 用一个小技巧解决了这个问题,发布在下面
答案 0 :(得分:1)
1)实际上有很多方法可以将数据传递到下一个视图...通常在这种情况下,比如你有更好的方法 - 使用会话(cookie | localstorage | sessionstorage),它就像剪贴板...保存会话数据一个视图,稍后在另一个视图中获取。例如:
第一个观点:
self.request.session['response_data'] = 'some text'
self.request.session.set_expiry(0) # user’s session cookie will expire when the user’s Web browser is closed.
其他观点:
response_data = self.request.session.get('response_data', '')
但是如果您计划在模板中使用这些数据,那么Django会为它提供更高级别的界面,在您的情况下,语义上可以使用它 - 消息框架 https://docs.djangoproject.com/en/1.8/ref/contrib/messages/ < / p>
2)如果您想重定向到另一个视图,请更好地使用网址命名空间和reverse
https://docs.djangoproject.com/en/1.8/ref/urlresolvers/#reverse
return HttpResponseRedirect(reverse(app.views.profile)) # here I've passed callable object because you have not show your app url namespace, but generally use namespaces
https://docs.djangoproject.com/en/1.8/topics/http/urls/#url-namespaces