我正在编写一个处理用户身份验证的应用,现在我正在尝试使用该功能。
我的网址是:
登录页面模板,调用带有POST的表单的html获取用户名和密码
url(r'^$', views.login_page, name='login_page'),
从登录表单调用,收到POST数据(用户名,密码)验证用户,登录并重定向到索引页
url(r'^auth', views.auth_user, name='auth'),
索引页面,这里我们必须登录才能看到它的内容
url(r'^index$', views.index, name='index'),
所以它似乎工作,我去127.0.0.1:8000/AcademyApp/启动,它显示登录表单,登录表单发送数据到auth视图,make auth,登录和重定向到索引,但索引它喜欢它无法读取已记录的用户数据,我正在尝试:
<h1>HI {{user.username}} !!</h1>
它没有显示任何内容,只是空白。
我参与了django教程,但我认为这个功能并不是很完整,或者根本不理解它:(
这里我放了一些重要的代码:
ACADEMYAPP / URLS.PY
urlpatterns = [
url(r'^$', views.login_page, name='login_page'),
url(r'^auth', views.auth_user, name='auth'),
url(r'^index$', views.index, name='index'),
HTML_LOGIN_FORM
<form action="/AcademyApp/auth" method="post">
username:
<input type="text" name="username" value="" /><br />
password:
<input type="password" name="password" value="" /><br />
<input type="submit" value="Log In" />
</form>
VIEWS.PY
def login_page(request):
template = loader.get_template('AcademyApp/login.html')
return HttpResponse(template.render())
def auth_user(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)
# Redirect to a success page.
return redirect("index")
else:
# Return a 'disabled account' error message
template = loader.get_template('AcademyApp/error.html')
else:
# Return an 'invalid login' error message.
template = loader.get_template('AcademyApp/error.html')
return HttpResponse(template.render())
@login_required
def index(request, user):
template = loader.get_template('AcademyApp/index.html')
return HttpResponse(template.render())
感谢您的帮助伙伴
答案 0 :(得分:0)
为了使模板能够访问user
变量,您需要使用RequestContext进行渲染。但是你根本没有传递任何上下文。您应该使用render
shortcut。
def index(request, user):
return render(request, 'AcademyApp/index.html', {})