我正在阅读《学习Python》这本书,并且遇到了章项目的问题。该项目使用的是较早版本的django,所以我不得不修改一些项目,但是这个项目确实让我陷于困境。基本上,auth_views.login需要成为auth_views.LoginView。登出也一样。我不知道如何将代码“转换”为新方法。
我看了看文档,但是文档没有显示项目工作流程的苹果到苹果示例(使用正则表达式网址)。这会引发位置参数错误(给出了1、2)
尝试替换:
url(r'^login/$',
auth_views.login,
kwargs={'template_name': 'admin/login.html'},
name='login'),
与:
url(r'^login/$',
auth_views.LoginView(template_name='admin/login.html'),
name='login'),
无济于事。
下面是完整的代码段。
# regex/urls.py
from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.core.urlresolvers import reverse_lazy
from entries.views import HomeView, EntryListView, EntryFormView
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^entries/$', EntryListView.as_view(), name='entries'),
url(r'^entries/insert$',
EntryFormView.as_view(),
name='insert'),
# here lies the troublemaker
url(r'^login/$',
auth_views.login,
kwargs={'template_name': 'admin/login.html'},
name='login'),
# as well as here
url(r'^logout/$',
auth_views.logout,
kwargs={'next_page': reverse_lazy('home')},
name='logout'),
url(r'^$', HomeView.as_view(), name='home'),
]