Реализация неверного сообщения пользователя с помощью Django - PullRequest
0 голосов
/ 30 марта 2011

Я создал приложение django.Он получил логин / регистрацию пользователя на тот же registrationForm.html.Функциональность входа работает нормально.Когда пользователь указывает правильное имя пользователя (здесь идентификатор электронной почты) и пароль, он перенаправляется на другую страницу (logedIn.html) с сообщением «Пользователь вошел в систему», а когда пользователь недействителен (неправильное имя пользователя или пароль), страницаснова отображается на этой странице (registrationForm.html).Теперь я хочу показать на этой странице сообщение «Проверьте свое имя пользователя или пароль».Будучи новичком в Джанго, я не могу этого сделать.Может кто-нибудь помочь сделать это.Я вставлю свой код сюда.

views.py

def registrationForm(request):
    if request.method == "POST":  
        firstName = request.POST.get("firstName")
        lastName = request.POST.get("lastName")
        email = request.POST.get("email")
        password = request.POST.get("password")
        sex = request.POST.get("sex")
        birthday = request.POST.get("birthday")
        print request.POST.get("sex")
        UniversityDetails(firstName=firstName,lastName=lastName,email=email,password=password,sex=sex,birthday=birthday).save()
        return render_to_response('registrationForm.html')
    return render_to_response("registrationForm.html")

def login(request):
    if request.POST:            
        email=request.POST.get("username")
        password = request.POST.get("password")                     
        user = UniversityDetails.objects.filter(email=email,password=password)          
        if(not user):
            return render_to_response("registrationForm.html")
        else:
            return render_to_response("logedIn.html")

html

<div align="center">
<form name="userInputForm" method="POST" id="myFormid" action="http://10.1.0.90:8080/login/">
<div style="float:left;width:100%;">
  <p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Email id</label><br/> <input type="text" name="username" size="25" /></p>
  <p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Password</label><br/><input type="password" name="password" size="25" /></p>
 </div> 
    <p style="clear:both;float:left;"><input type="submit" value="Log in" /></p>
</div>
</form>

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Существуют серьезные проблемы с тем, как вы делаете вещи - например, сохраняете незашифрованные пароли - посмотрите на встроенные бэкэнды аутентификации, доступные для django, чтобы правильно войти в систему. Дополнительные преимущества включают в себя автоматическую доступность пользователя в request.user http://docs.djangoproject.com/en/dev/topics/auth/

НО, я понимаю, изучать джанго один шаг за раз Учитывая ваш код, просто добавьте переменную в контекст вашего шаблона, отображаемого при ошибке.

def login(request):
    if request.POST:            
        email=request.POST.get("username")
        password = request.POST.get("password")                     
        user = UniversityDetails.objects.filter(email=email,password=password)          
        if(not user):
            return render_to_response("registrationForm.html", 
                       {'invalid': True }) # our template can detect this variable
        else:
            return render_to_response("logedIn.html")

шаблон

{% if invalid %}
    Your email/password combo doesn't exist. 
{% endif %}
2 голосов
/ 30 марта 2011

Я настоятельно рекомендую использовать встроенную систему аутентификации пользователя Django .Вы можете хранить дополнительную информацию о пользователях для каждого пользователя, и она сделает большую часть работы за вас (включая зашифрованные пароли и разрешения пользователей).

Если это невозможно, то посмотрите наиспользование форм для сбора и проверки пользовательских данных - это намного чище и проще, чем делать это самостоятельно.

Наконец, я бы порекомендовал вам ознакомиться с учебным пособием чтобы увидеть, как использовать переменные в ваших шаблонах.

Я знаю, что требуется некоторое время, чтобы ознакомиться с тем, как Django делает вещи (бог знает, это заняло у меня достаточно много времени), но придерживайтесь там:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...