登录表单在django项目的下拉引导程序中

时间:2013-03-03 06:42:32

标签: django forms drop-down-menu twitter-bootstrap login

我一直在尝试在django项目的下拉列表(引导程序)中创建和验证登录表单(用户和密码),但表单永远不会被创建并且从未经过验证,我真的不知道它能做什么是的,这是代码(在简历中,我不能在引导下拉列表中放置一个表单):

forms.py中的

class LoginForm(forms.Form):

   username = forms.CharField(min_length = 2, max_length=36,label=_('Username'))

   password = forms.CharField(min_length = 4, max_length=16, widget=forms.PasswordInput(render_value=False), label=_('Password')) 
views.py中的

def index_view(request):
activo = "index"
secciones = seccion.objects.filter(titulo=activo)
mensaje = ""
if request.user.is_authenticated():
    return HttpResponseRedirect('/')
else:
    if request.method == "POST":
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            usuario = authenticate(username=username,password=password)
            if usuario is not None and usuario.is_active:
                login(request,usuario)
                return HttpResponseRedirect('/')
            else:
                mensaje = "usuario y/o password incorrecto"


ctx = {'activo':activo,'seccion':secciones}
return render_to_response('home/index.html',ctx,context_instance=RequestContext(request))
base.html中的

        <div class="nav-collapse"><!-- Other nav bar content -->
        <!-- The drop down mrender_to_response('home/index.html',ctx,context_instance=RequestContext(request))enu -->
            <ul class="nav pull-right sign-in">
            {% if user.is_authenticated %}
                <a id="profile-box" class="btn dropdown-info" data-toggle="dropdown" href="#">
                    <i class="icon-user"></i> {{ user.username }}
                    <span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                    <li><a href="#">Perfil</a></li>
                    <li class="divider"></li>
                    <li><a id="sign-out-link" href="{% url vista_logout %}">Cerrar Sesion</a></li>
                </ul>
            {% else %}
                <li><a href="/accounts/register"><button class="btn btn-success"  type="submit">Registrase</button></a></li>

                <li class="divider-vertical"></li>
                <li id="sign-in-box" class="dropdown">
                <a id="sign-in-link" class="dropdown-toggle" href="#" data-toggle="dropdown"><button class="btn btn-success">Ingresar</button></a>


                <div class="dropdown-menu" style="padding: 15px; padding-bottom: 0px;">
                    <form class="js-signin signin" action="." method="POST" accept-charset="UTF-8">{% csrf_token %}
                            <!--{% if form %}-->                                
                                {{ form.as_p }}
                            <!--{% else %}                          
                                <p>
                                    <label for="username">usuario:</label> 
                                    <input id="username" type="text" name="username" />
                                </p>
                                <p>
                                    <label for="password">contraseña:</label> 
                                    <input id="password" type="password" name="password" />
                                </p>
                            {% endif %}-->


                                <input id="remember_me" type="checkbox" name="remember_me" value="1" />
                                <label class="string optional" for="user-remember-me"> Recordar mis datos</label>       
                    </form>

                            <button id="login-button" class="btn btn-block btn-primary" type="submit">Ingresar</button>



                </div>


                </li>           
              {% endif %}
            </ul>
        </div>

1 个答案:

答案 0 :(得分:2)

您忘记将表单传递给您的上下文数据。

试试这个:

ctx = {'activo':activo,'seccion':secciones,'form': form}