Я пытаюсь следовать коду из http://docs.djangoproject.com/en/1.1/topics/auth/ в отношении имен пользователей.
def my_view(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)
HttpResponseRedirect('/%s/'%username)
else:
#Logic will go here later
pass
else:
# Return an 'invalid login' error message.
pass
Моя проблема в том, что когда я пытаюсь использовать это новое представление, я получаю следующее сообщение об ошибке:
('ожидается блок с отступом', ('C: \ emodel_tracking \ .. \ emodel_tracking \ tracker \ views.py', 50, 4, 'else: \ n'))
Я не вижу, как форматирование в операторе else могло быть неправильным; Я использую код прямо из документации Django. Есть идеи, что не так с утверждением "else"?
edit: ОК, используя pass исправил эту ошибку - теперь я получаю болтовню о: MultiValueDictKeyError в / login /
--- Ключ 'username' не найден в QueryDict: {}. Мысли? Я не совсем уверен, что делать дальше - я предполагаю, что мне нужно как-то связать это с HTML-формой, похожей на эту:
{% extends "base.html" %}
{% block content %}
{% if form.errors %}
<p class="error">Sorry, that's not a valid username or password</p>
{% endif %}
<form action="" method="post">
<label for="username">User name:</label>
<input type="text" name="username" value="" id="username">
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next|escape }}" />
</form>
{% endblock %}
Если это так, то как мне оформить форму (которая, если я не ошибаюсь, потребует заявление 'return') до того, как я запросил информацию, которую требует форма?