0

Django Web アプリの構築中に問題に直面しています。ユーザーが自分のアカウントにログインした場合、そのセッションを保存し、再度ログイン ページにアクセスしたときに、自分のホームページにリダイレクトする必要があります。これが私のコードです。

Views.py

from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
from django.template import RequestContext

def index(request):
    return HttpResponse("Index Page")

@login_required
    def home(request):
ctx = {}
return render_to_response('auth/home.html',ctx, context_instance = RequestContext(request))

def login_page(request):
    if request.user.is_authenticated():
        return redirect('cc_home')
    else:
    return render_to_response(request,'auth/cc.html')

Urls.py

from django.conf.urls.defaults import *
from django.contrib.auth.views import login, logout

urlpatterns = patterns('',
url(r'cc/', 'apps.auth.views.login_page', name = 'cc_login'),
url(r'logout/', logout, name = 'cc_logout'),
url(r'home/','apps.auth.views.home', name = 'cc_home'),
)

そして、これが私のテンプレートcc.htmlです

    <form action ="." method = POST>
        {% csrf_token %}    
        {{ form.as_p }}
        <input type = "submit" value = "login">
    </form>


</body>

home.html

{{ user }} 's profile
<a href = "{% url 'cc_logout' %}">Logout</a>

CC url を参照すると、最初にユーザーの資格情報が要求されます。ログインに成功すると、正常に動作しているユーザーのホーム URL にリダイレクトされます。ただし、ユーザーが再び CC url () を参照すると、それを自分のホームページにリダイレクトする必要があります。

デバッグ中に、ユーザーが認証されていない場合、フォームをレンダリングできないことがわかりました。CC.html で提供される Django の組み込みフォームは表示されず、ログイン ボタンが表示されるだけです。

フォームをレンダリングするにはどうすればよいですか。よろしくお願いします。

ありがとう

4

3 に答える 3

1

置き換えると、デフォルトのフォームを使用できるはずです。

url(r'cc/', 'apps.auth.views.login_page', name = 'cc_login'),

と;

url(r'cc/', login, {template_name: 'cc.html'}),
于 2013-07-13T16:16:10.613 に答える
1

しかし、レンダリングするフォームをテンプレートに渡していません! ログイン フォームをインスタンス化してテンプレート コンテキストに渡す必要があります。それ以外の場合{{ form }}は何も参照しません。

于 2013-07-13T16:11:36.110 に答える