是否有一种准备使用Django管理页面而没有任何形式的身份验证的方法?我知道我可以使用this方法,但这是Django 1.3。是否有任何更改可以让我在Django 1.6中更容易做到这一点? 我的主要动机是,我想拥有尽可能少的数据库表,而我仅在本地使用它,因此不需要任何形式的身份验证(无论如何我只在Localhost上运行服务器)。
接受的答案已经非常简单了,但是在解决此问题之后,我发现在django的最新版本中(因为admin.site.has_permission成为一件事...> = 1.8?),您无需中间件就可以做到这一点。
在您的项目的urls.py:from django.contrib import admin
class AccessUser:
has_module_perms = has_perm = __getattr__ = lambda s,*a,**kw: True
admin.site.has_permission = lambda r: setattr(r, 'user', AccessUser()) or True
# Register the admin views or call admin.autodiscover()
urlpatterns = [
# Your url configs then...
url(r'^admin/', admin.site.urls),
]
如果您有访问者扩展用户,则可以忽略
__getattr__
创建一个模块
auto_auth.py
:
dedit
MIDDLEWARE
在您的settings.py
中::
add如果您想要特定的用户,您可以更改为其他东西。
'django.contrib.auth.middleware.AuthenticationMiddleware'
'auto_auth.AutoAuthMiddleware'
中删除User.objects.filter()[0]
但是,如果您使用任何依赖Auth应用程序的应用程序,则您的时间很差。
为Django版本改编的接受答案> =1.10class User:
is_superuser = True
is_active = True
is_staff = True
id = 1
def return_true(*args, **kwargs):
return True
User.has_module_perms = return_true
User.has_perm = return_true
class AutoAuthMiddleware(MiddlewareMixin):
def process_request(self, request):
request.user = User()
:
'django.contrib.auth'
in
INSTALLED_APPS
对于/[yourapp]/middleware.py
列表:
from django.contrib.auth.models import User
class AuthenticationMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
request.user = User.objects.filter()[0]
return self.get_response(request)
申请:
[yourproject]/settings.py
对于大多数人来说,很明显,但请注意,该解决方案仍然需要一个用户存在。手动创建一个或使用脚本自动创建一个:
如何自动在django上创建植物植物? 每个模式Django
在码头容器中创建Django超级用户,而无需输入密码
让第一个用户绕过身份验证
MIDDLEWARE
'django.contrib.auth.middleware.AuthenticationMiddleware',
'[yourapp].middleware.AuthenticationMiddleware',
python manage.py createsuperuser
以下解决方案
django5.1.2中的工作,只是涉及修改
# app/admin.py
from django.contrib.auth.models import User
anonymous_user = User.objects.all().first()
admin.site.has_permission = lambda r: setattr(r, 'user', anonymous_user) or True
class User:
is_superuser = True
is_active = True
is_staff = True
id = 1
pk = 1
User.has_module_perms = True
User.has_perm = True
class Middleware(object):
def __init__(self, get_response):
self.response = get_response
def __call__(self, request):
request.user = User()
return self.response(request)
.
。(其他提出的解决方案要么需要在数据库中拥有现有用户(例如,通过运行django.contrib.auth
auto_auth
对象而无需保存到数据库中,这可能会在Django尝试在admin.py
表中记录更改时会产生错误。)
urls.py
并将其注册在createsuperuser
User
用于所有使用Django 3.0,concomment此代码
auth_user_model ='customuser'
在您的设置中。创建超级用户后,然后取消点击此代码auth_user_model='customuser'.。 这发生在我身上,这就是我对Django3.0你应该很好。希望它有帮助