django - 登录不从下拉列表提交到服务器

时间:2015-06-21 02:49:56

标签: python django twitter-bootstrap

我正在尝试为我的index.html页面设置下拉列表,如此 -

<!-- Collect the nav links, forms, and other content for toggling -->
      <ul class="nav navbar-nav navbar-right">
          <li class="hidden"><a href="#page-top"></a></li>
          <li><a class="page-scroll" href="#howitworks">How it works</a></li>
          <li><a class="page-scroll" href="#api">API</a></li>
          <li><a class="page-scroll" href="#about">About</a></li>
          <li><a class="page-scroll" href="#contact">Contact</a></li>
          <li class="divider-vertical"></li>

          {% if user.is_authenticated %}
            <li><a href="/dashboard/">Dashboard</a></li>
          {% else %}
            <li class="dropdown">
            <a class="dropdown-toggle" href="#" data-toggle="dropdown">Login <strong class="caret"></strong></a>
            <div class="dropdown-menu" style="padding: 15px; padding-bottom: 10px;">
              <form action='/login/' method="POST">
              {% csrf_token %}
                {% if form.errors %}
                    {{ form.errors}}
                {% endif %}
                <label for="id_email">Login:</label>
                <input type="text" style="margin-bottom: 5px;" name="email" id="id_email">
                <br />
                <label for="id_password">Password:</label>
                <input type="password" style="margin-bottom: 5px;" name="password" id="id_password">
                <br />
                <input class="btn btn-primary" type="submit" value="Login" />
                <input type="hidden" name="next" value="{{ current_path }}" />
              </form>
           </div>
           </li>
         {% endif %}
     </ul>

问题是输入用户名/密码并点击“登录”它实际上没有做任何事情。浏览器询问我是否要在本地保存密码,但它似乎没有将任何类型的请求发送回服务器。

这是我的urls.py

from __future__ import unicode_literals

from django.conf.urls import patterns, include, url
from django.views.generic.base import TemplateView
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^login/$', 'LoginRequest'),
    url(r'^data', include('companydemo.urls', namespace='client_access')),
    url(r'^dashboard', TemplateView.as_view(template_name="dashboard/index.html")),
    url(r'^', TemplateView.as_view(template_name="index.html")),
)

这是我的forms.py

from django import forms

class LoginForm(forms.Form):
        email = forms.CharField(label=(u'Email'), max_length=30)
        password = forms.CharField(label=(u'Pass'), widget=forms.PasswordInput(render_value=False), max_length=30)

这是我的views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render

from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.db.models.fields.files import FieldFile
from django.views.generic import FormView
from django.views.generic.base import TemplateView
from django.contrib import messages
from django.http import HttpResponseRedirect
from forms import LoginForm

def LoginRequest(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            password = form.cleaned_data['password']
            user = authenticate(email=email, password=password)
            if user is not None:
                login(request, user)
                return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
            else:
                return render_to_response('/', {'form': form}, context_instance=RequestContext(request))
        else:
            return render_to_response('/', {'form': form}, context_instance=RequestContext(request))
    else:
        form = LoginForm()
        return render_to_response('/', {'form': form}, context_instance=RequestContext(request))

0 个答案:

没有答案