将auth_views.login从Django 1转换为2

时间:2019-05-16 19:19:15

标签: python django

我正在阅读《学习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'),
]

0 个答案:

没有答案
相关问题