对于我的注册应用程序,我使用Django的LoginView方法让用户登录。这个应用程序的urls.py看起来像这样:
urls.py:
from django.urls import path
from django.contrib.auth import views as views_stock
from . import views
urlpatterns = [
path('accounts/login/', views_stock.LoginView.as_view(), name='login'),
path('accounts/logout/', views_stock.LogoutView.as_view(next_page='/'), name='logout'),
path('accounts/register', views.register, name='register')
]
我按照文档中的建议添加了as_view((。但对于我自己的观点,"register",我没有包含as_view((。将其纳入"注册"是更好的做法,还是不需要?
当您使用基于类的视图[Django-doc]时。LoginView
[Django-doc]和LogoutView
Django-dok]是类。
这种基于类的视图是继承自View
类的类(例如,TemplateView
是View
的子类(,而View
类提供了.as_view(…)
方法方法。
此方法将导出一个函数,该函数将采用request
以及位置和命名参数,就像基于函数的视图一样。对于基于函数的视图,作为一个简单的函数,不能使用.as_view(…)
,因为这些函数没有.as_view
属性。
只有当视图基于类时,才使用as_view()
函数。
对于仅定义为函数的更简单的视图,您仅按原样包含它(因此省略了as_view()
(。