0

この質問には何らかの方法で回答があったことは知っていますが、ユーザーがログインした後にリダイレクトする方法がまだわかりません.DjangoにはWebサイトが組み込まれていることは知っていますが、次のようなカスタムログインフォームが必要です. (これは HTML です):

{% if user.is_authenticated %}
    <!-- Authenticate account menu -->
{% else %}
    <h3>Login</h3>
    <form action="/app/login/" method="post" accept-charset="utf-8">
        <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" />
        <p><input type="submit" value="Login →"></p>
    </form>
{% endif %}

私の views.py は次のようになります。

from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.template import Context, loader
from django.contrib.auth import authenticate, login
from django.views.generic.simple import *

def index(request):
if request.method == 'POST':
        user = authenticate(username=request.POST['username'],                    password=request.POST['password'])
        if user is not None:
            if user.is_active:
                login(request, user)
                # success
            if request.POST['next']:
                return HttpResponseRedirect(request.POST['next'])
            else:
                return HttpResponseRedirect('/')
        else:
            # disabled account
            return direct_to_template(request, 'inactive_account.html')
    else:
        # invalid login
        return render_to_response("app/index.html")
return render_to_response("app/index.html")

私は自分でコードを完全に書いたわけではありません。私は、リダイレクトがhtmlファイルのどこかで発生することを理解しました: <form action="/app/login/. しかし、djangoはURLが見つからないと言っています。全体として、私はWebプログラミング+ django + pythonが初めてで、概念が完全に明確ではないと言わざるを得ません。手伝ってくれてありがとう!!

4

1 に答える 1

0

たとえば、いくつlogin(request, user)かの http 応答を返す必要がある場合、それは ome テンプレートからレンダリングされたページです。しかし、他のページに移動したい場合は、戻ることができHttpResponseRedirect('/needed_url')、指定された URL へのリクエストを取得します。

またrequest.POST['referrer'])、必要に応じて URL を指定して前のページに移動することもできます。

Django ドキュメント - HttpResponseRedirect

<form action="/some/url/" ...PSさらに、フォームデータを管理するためにどのアドレスに行くかについても言えます。Django の場合、urls.pyファイルに のようなレコードが必要(r'^some/url/$', some_function)です。これは、指定された関数でリクエストを処理します。

于 2013-01-20T11:23:21.623 に答える