0

私はフォームDjangoに不慣れで、フォームに関する助けが必要でしたlogin。これが私がやったことです。

私のテンプレートはindex.html

<form class="form-signin" action="/login" method="post">
    {% csrf_token %}
    <h2 class="form-signin-heading">Please sign in</h2>
    <input type="text" class="input-block-level" placeholder="Email address" name="email">
    <input type="password" class="input-block-level" placeholder="Password" name="password">
    <label class="checkbox">
        <input type="checkbox" value="remember-me"> Remember me
    </label>
    <button class="btn btn-large btn-primary" type="submit">Sign in</button>
</form>

& home.htmlas {{user.username}}(テスト用のこの行のみ)

views.pyは持っています:

def login(request):
    s_email = request.POST["email"]
    s_password = request.POST["password"]

    global user
    user = authenticate(email=s_email, password=s_password)
    if user is not None:
        if user.is_active:
            login(request, user)
            return render_to_response('home.html', dict(user=user), RequestContext(request))
        else:
            return render_to_response('index.html', {}, RequestContext(request))

urls.pyは持っています:

url(r'^/login/$', 'website.views.login')

それでも、ログインできません。への404HTML ボタンをクリックするたびにエラーがスローされます"Sign In"

助けが必要。

4

1 に答える 1

1

コメントで概説されているユースケースを考えると、これが私がとるアプローチです。name各フォームには、属性がの非表示フィールドが含まれますaction

from django.contrib.auth import authenticate, login
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render

def home(request):
    login_form = LoginForm(request.POST or None)
    registration_form = RegistrationForm(request.POST or None)

    if request.method == 'POST':
        action = request.POST.get('action')
        if action == 'login':
            if login_form.is_valid():
                user = authenticate(email=login_form.cleaned_data.get('email'),
                    password=login_form.cleaned_data.get('password'))
                login(request, user)
                return HttpResponseRedirect(reverse('some_url'))
        else:
            if registration_form.is_valid():
                registration_form.save()
                # do whatever else
    return render('some-template.html', {'login_form': login_form,
        'registration_form': registration_form})
于 2013-05-22T13:38:48.007 に答える