[英]'function' object has no attribute 'get' error in django
问候亲爱的 django 专家,我的网站有问题我正在使用 django 中的默认登录视图
from django.contrib.auth import views as auth_views
代码正在运行
像这样在 urls.py 文件中:
from django.contrib.auth import views as auth_views
path('login/',auth_views.LoginView.as_view(template_name='website/login.html'), name='login-page'),
但是使用这种方法,我的views.py 文件中没有视图。 问题是我需要在我的 viwes.py 中定义一个视图来记录访问此页面的任何人的日志问题是当我尝试以下代码时出现错误“'function' object has no attribute 'get'”
给我错误的代码如下:views.py
from django.contrib.auth import views as auth_views
def login(request):
ip = get_client_ip(request)
logger.info(f'user access: {request.user} via ip:{ip}')
return auth_views.LoginView.as_view(template_name='website/login.html')
网址.py
path('login/',views.login, name='login-page'),
.LoginView.as_view()
不处理请求,它只是返回一个 function 来分派请求,因此您需要调用 function ,它是.as_view(…)
的结果, request
作为参数:
from django.contrib.auth import views as auth_views
def login(request):
ip = get_client_ip(request)
logger.info(f'user access: {request.user} via ip:{ip}')
return auth_views.LoginView.as_view(template_name='website/login.html')(request)
话虽如此,这样做看起来有点奇怪。 为什么不直接LoginView
并注册该视图?
因此,您可以这样做:
# /views.py
from django.contrib.auth.views import LoginView
class MyLoginView(LoginView):
template_name='website/login.html'
def setup(self, request, *args, **kwargs):
super().setup(request, *args, **kwargs)
ip = get_client_ip(request)
logger.info(f'user access: {request.user} via ip:{ip}')
然后注册您的MyLoginView
:
from .views import MyLoginView
path('login/', MyLoginView.as_view(), name='login-page'),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.