django:即使用户名和密码正确,用户也从不进行身份验证

时间:2013-09-29 03:21:21

标签: django django-models django-forms django-templates django-views

好的,所以我的auth_view就是这个(我认证登录的视图/检查用户名是否与密码匹配)。

def auth_view(request):
    username = request.POST['username']
    password = request.POST['password']
    if username is not None and password is not None: #making sure username and password is not empty
        user = authenticate(username=username, password=password)
    else:
        return redirect('/loggedin_invalid_view/')

    if user is not None:
        auth.login(request, user)
        return redirect('/loggedin_view/')
    else:
        return redirect('/loggedin_invalid_view/')

我在模板中的登录表单是:

<form method="post" action="/auth_view/">{% csrf_token %}       
    <label for="username">Username:</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">
</form>

现在,我保存用户名和密码的模型名为Users,我创建了一个名为UsersForm的表单。在表单中,它有一个名为'username''password'的SlugField。用户表单所在的模板是:

<form method="post" action="">{% csrf_token %}
    {{ form.first_name }} {{form.last_name }} <br>
    {{ form.username }} {{ form.password }} <br>
    <input type="submit" value="Register"/>
</form>

所以我注册了(UsersForm基本上是注册表格),用户名为'user1',密码为'password1',然后当我尝试登录时,它重定向到/ loggedin_inavlid_view而不是loginin_view,怎么样?我是否必须编辑我的视图以手动进入用户模型并检查是否有用户名为user1的用户名,然后检查user1的密码是否为password1?

哦,第二个问题。在我的登录表单中,在这一行:

<form method="post" action="/auth_view/"> 

如果我将行动改为

,它会起作用吗?
<form method="post" action="{% url 'myapp.views.auth_view' %}">

0 个答案:

没有答案