Django渲染问题

时间:2013-07-13 15:57:48

标签: django django-sessions

我在构建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时,它应首先询问用户的凭据。成功登录后,它应该重定向到用户的主页,运行正常。但是,当用户再次浏览到CC url()时,他应该将其重定向到他的主页。

在调试时,我发现在用户未经过身份验证时无法呈现表单。它没有显示CC.html中提供的Django内置形式,它只显示了Login按钮。

如何呈现表单。请建议。

由于

3 个答案:

答案 0 :(得分:1)

但是你没有将任何表格传递给模板进行渲染!您需要实例化登录表单并将其传递给模板上下文,否则{{ form }}不会引用任何内容。

答案 1 :(得分:1)

如果替换,您应该可以使用默认表单;

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

用;

url(r'cc/', login, {template_name: 'cc.html'}),

答案 2 :(得分:0)

可能是login_page方法中的错误。尝试像这样修复它    def login_page(请求):     if request.user.is_authenticated():         return redirect('cc_home')     其他:     return render_to_response('auth / cc.html',{} context_instance = RequestContext(request))    我相信你的render_to_response中的请求会导致问题