Я хочу сделать это:
1.открыть login_view
(это страница логина пользователя)
2. напишите мое имя пользователя и пароль и нажмите кнопку «Войти», затем отправьте в login_submit
представление
3.в login_submit
вид, если ваше имя пользователя и пароль верны, вы вернетесь на домашнюю страницу
4.но когда я return HttpResponseRedirect("/")
до hpmeage, homepage.html
(следующий код) не имеет user
объекта
5. Мне нужно сделать так в login_submit
view:
return render_to_response('homepage.html',{'user':user})
6.Это громоздко, я хочу использовать return HttpResponseRedirect("/")
, поэтому я должен установить файлы cookie, которые сохраняют пользователя, или есть какой-либо другой простой способ сохранить пользователя, который не использовался для его вставки каждый раз, когда он вам нужен. *
спасибо
homepage.html:
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please <a href="/account/login_view">login</a></p>
{% endif %}
Вирв домашней страницы:
def home(request):
return render_to_response('homepage.html')
это login_view:
def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/') # Redirect after POST
else:
form = LoginForm() # An unbound form
return render_to_response('accounts/login_view.html',{'form': form,})
login_view.html:
<form action="/account/login_submit/" method="post">
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}: {{ field }}
</div>
<p><input type="submit" value="login" /> or <a href="/account/register_view"><input type="button" value="register"></a></p>
</form>
и
def login_submit(request):
if request.method == 'POST':
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("/")
else:
return HttpResponse('user is not active')
else:
#return HttpResponseRedirect("/account/login_submit")
return HttpResponse('login error')