0

我正在尝试在 django 中对用户进行身份验证(使用简单的 authenticate() 函数)。

def auth(request):
    if request.method == 'POST':
        auth_form = AuthenticationForm(request.POST)
        if auth_form.is_valid():
            auth_form.save()
            user = authenticate(username=request.POST['id_username'],password=request.POST['id_password'])
            if user is not None:
                login(request,user)
                return redirect('/profile/home/')
            else:
                return redirect('/')
    else:
        return redirect('/')

def register(request):
    if request.method == 'POST':
        form = SimpleUserCreation(request.POST)
        if form.is_valid():
            form.save()
            user = authenticate(username=request.POST['id_username'],password=request.POST['id_password1'])
            login(request,user)
            return redirect('/profile/home/')
        else:
            return redirect('/')

这是显示表单的模板 - 只是想在同一页面中显示登录和注册表单(对于这个例子)

{% extends 'base.html' %}

{% load bootstrap_toolkit %}

{% block content %}
    <div class="row">
        <div class="span4 offset1 login">
            <form class="form-signin" action="/auth/" method="POST">
                {% csrf_token %}
                {{ auth_form|as_bootstrap }}
                <br>
                <center>
                    <button class="btn btn-large btn-primary" type="submit">
                        Sign In
                    </button>
                </center>
            </form>
        </div>
        <div class="span4 offset2 signup">
            <form action="/register/" method="POST">
                {% csrf_token %}
                {{ form|as_bootstrap }}
                <br>
                <center>
                    <button class="btn btn-large btn-primary" type="submit">
                        Register
                    </button>
                </center>
            </form>
        </div>
    </div>
{% endblock %}

我收到这样的错误:

ValueError at /auth/
The view SimpleUserAuth.auth.views.auth didn't return an HttpResponse object.

知道我哪里出错了吗?我认为它的身份验证功能无法为字段找到正确的 id ......也许我错了。我是菜鸟:|

干杯

4

2 回答 2

0

在您的auth方法中,如果auth_form.is_valid()返回False,则不返回response对象。

中的情况也是如此def register(request):。如果是GET请求,则该方法不返回response对象。

因此错误

于 2013-07-14T19:30:17.823 回答
0

我在这些方面犯了错误-

1) AuthenticationForm 采用如下参数: AuthenticationForm(data=request.POST)

2)你不能保存AuthenticationForm。

auth_form = AuthenticationForm(request.POST)
        if auth_form.is_valid():
            auth_form.save()

感谢您的帮助 karthik :)

于 2013-07-15T04:42:42.323 回答