在Django url中,调用视图时什么时候需要使用as_view()方法



对于我的注册应用程序,我使用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]和LogoutViewDjango-dok]是

这种基于类的视图是继承自View类的类(例如,TemplateViewView的子类(,而View类提供了.as_view(…)方法方法。

此方法将导出一个函数,该函数将采用request以及位置和命名参数,就像基于函数的视图一样。对于基于函数的视图,作为一个简单的函数,不能使用.as_view(…),因为这些函数没有.as_view属性。

只有当视图基于类时,才使用as_view()函数。

对于仅定义为函数的更简单的视图,您仅按原样包含它(因此省略了as_view()(。

最新更新