django.contrib.auth.views.login什么都不做,为什么?

Lor*_*ABA 1 python django django-authentication

当我尝试使用视图的URL时@login_required,它会将我重定向到登录表单.但渲染的表单没有action=属性,当我点击提交按钮时没有任何反应.但是当我去的时候,/admin/我得到了工作登录表单.以这种方式登录后,所有视图都正常工作.我正在使用admin_bootstrap它,这是不同的登录表单.但为什么默认的那种方式呢?

相关代码:

mySubApp/views.py:

@login_required
def index(request):
    user = request.user
    return HttpResponse("Hello, world. You're at index.")
Run Code Online (Sandbox Code Playgroud)

mainApp/urls.py:

#login
url(r'^login/$', 'django.contrib.auth.views.login', name='LogMeIn'),

#mySubApp
url(r'^subapp/', include('mySubApp.urls')),
Run Code Online (Sandbox Code Playgroud)

mySubApp/urls.py:

urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
)
Run Code Online (Sandbox Code Playgroud)

settings.py:

LOGIN_URL = 'LogMeIn'
Run Code Online (Sandbox Code Playgroud)

我是否需要创建自定义登录表单才能使其正常工作?

Tim*_*ony 5

使用身份验证视图时,您必须定义自己的模板(defualt不提供这些模板):

Django提供了几个可用于处理登录,注销和密码管理的视图.这些使用了股票身份证明表格,但您也可以传递自己的表格.

Django没有为身份验证视图提供默认模板 - 但是下面的每个视图都记录了模板上下文.

所以创建一个registration/login.html:

<form action="{% url auth:login %}" method="post">{% csrf_token %}
  {{ form.as_p }}
  <input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

  • `Django没有为身份验证视图提供默认模板 - `有谁知道为什么Django选择不提供默认模板?我也有点惊讶,因为我认为它会像管理员一样工作,只需提供一个免费登录工具即可快速开始对网站进行电镀. (2认同)