2010-08-11 73 views
4

我有贯穿教程的问题,似乎这些问题源于此:Django的登录应用教程问题

(r'^l/login/$', 'django.contrib.auth.views.login'), 

看来我已经做了所有正确的,但形式不显示。 如果我点击登录。我回到没有窗体的同一页面。

我错过了什么吗?

这里的代码:

urls.py:

from django.conf.urls.defaults import * 
from formsapp.views import * 
from login.views import * 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 

#Forms1: 
    (r'^$', main_page), 
#Forms2 
    (r'^register/', main_page1), 
#FormsLogin: 
    (r'^l/', login_main_page), 
    (r'^l/login/$', 'django.contrib.auth.views.login'), 
    (r'^l/logout/$', 'logout_page'), 

views.py:

from django.http import HttpResponse, Http404, HttpResponseRedirect 
from django.contrib.auth import logout 
from django.contrib.auth.models import User 
from django.template import RequestContext 
from django.shortcuts import render_to_response 

def login_main_page(request): 
    return render_to_response('mainpage.html', RequestContext(request)) 

def logout_page(request): 
    logout(request) 
    return HttpResponseRedirect('/l/') 

base.html文件:

<html> 

<head> 

<title> {% block title %}{% endblock %}</title> 

</head> 

<body> 
<h1>{% block head %}{% endblock %}</h1> 
{% block content %}{% endblock %} 
<br> 
<br> 
<br> 
<a href="/l/">Login Main Page</a> 
{% if user.is_authenticated %} 
    <a href="/l/logout/">Log out </a> 
{% else %} 
    <a href="/l/login/">Log in </a> 
{% endif %} 

</body> 

</html> 

的login.html:

{% extends "base.html" %} 
{% block title %}Log in{% endblock %} 
{% block head %}Log in{% endblock %} 
{% block content %} 
    {% if form.has_errors %} 
    <p> Username or password didn't work. Please enter them again </p> 
    {% endif %} 

    <form method="post" action="."> 
     <p><label for="id_username">Username: 
      </label>{{ form.username }}</p> 
     <p><label for="id_password">Password: 
      </label>{{ form.password }}</p> 
     <input type="hidden" name="next" 
      value="/l/" /> 
     <input type="submit" value="Log in" /> 
    </form> 

{% endblock %} 

回答

5

URL模式

(r'^l/', login_main_page), 

将匹配开始l/任何URL,并将其置于前l/login所以第二个将不被调用,您应该终止正则表达式与$

(r'^l/$', login_main_page), 
+1

感谢bilion!你是主人。那是错误! – MacPython 2010-08-11 14:10:16

+0

固定格式化[Lev Levitsky](http://stackoverflow.com/users/1258041/lev-levitsky)版本,thx Lev打破答案代码... – rombarcz 2013-12-23 13:51:03