我正在尝试将一些信息从views.py传递到我的索引页面(index.html)。一个通过,我需要在索引页面中访问它。我试过谷歌搜索它,但我不清楚。任何帮助,将不胜感激。我已经在我尝试的下面附上了。
下面我想访问索引页面中的“bar”值。我怎么能这样做?
def tempLogin(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(reverse('index',foo='bar'))
else:
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponseRedirect(reverse('index'))
答案 0 :(得分:11)
我看到这个问题很多,而且它背叛了对HttpResponseRedirect的作用缺乏了解。它只是告诉浏览器去获取另一个URL:所以你可以传递给它的唯一参数是那些其他URL模式所期望的参数。如果您的索引URL有一个可选空间供您放置名称值,那么您可以传递它。否则,您需要以其他方式执行此操作:可能在会话中。
答案 1 :(得分:4)
您无法使用HttpResponse
或HttpResponseRedirect
执行此操作。您必须使用render
或render_to_response
。有点像下面:
from django.shortcuts import render
def templogin(request):
# Do all your processings here ...
return render(request, 'index.html', {'bar': bar})
传递给render
的第一个参数始终为request
。第二个参数是模板的名称。在您的情况下,它是index.html
。第三个参数是字典即要添加到模板上下文的变量。在您的情况下,它是bar
。
以下是Django docs上render
的更多信息。
然后在您的模板中,您可以访问bar
变量,如下所示:
<h1> {{ bar }} </h1>
或
<span> Hello, {{ bar }}! </span>
Django会自动将{{ bar }}
替换为它的值。