有没有一种方法可以在没有任何形式的身份验证的情况下使用Django管理页面?我知道我可以使用这种方法,但这适用于Django 1.3.是否有任何变化可以让我在Django 1.6中更容易地做到这一点?
我的主要动机是我想拥有尽可能少的数据库表,而我只在本地使用它,所以不需要任何形式的身份验证(我只是在localhost上运行服务器).
创建一个模块auto_auth.py
:
from django.contrib.auth.models import User
class Middleware(object):
def process_request(self, request):
request.user = User.objects.filter()[0]
Run Code Online (Sandbox Code Playgroud)
MIDDLEWARE_CLASSES
在您的编辑settings.py
:
'django.contrib.auth.middleware.AuthenticationMiddleware'
'auto_auth.Middleware'
User.objects.filter()[0]
如果您想要特定用户,可以更改为其他内容.
回应你的评论:是的.试试这个:
class 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 Middleware(object):
def process_request(self, request):
request.user = User()
Run Code Online (Sandbox Code Playgroud)
并'django.contrib.auth'
从中删除INSTALLED_APPS
但是如果您使用任何依赖于auth应用程序的应用程序,那么您将度过一段美好时光.
小智 8
接受的答案已经非常简单了但是在搞清楚之后我发现在最近的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),
]
Run Code Online (Sandbox Code Playgroud)
如果你有AccessUser扩展用户,你可以省去__getattr__
一个hacky方式的部分,当调用user.pk或类似的东西时返回一些东西.
/[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)
Run Code Online (Sandbox Code Playgroud)
在[yourproject]/settings.py
该MIDDLEWARE
列表:
'django.contrib.auth.middleware.AuthenticationMiddleware',
'[yourapp].middleware.AuthenticationMiddleware',
对于大多数人来说可能很明显,但请注意,该解决方案仍然需要一个用户存在。python manage.py createsuperuser
使用脚本手动或自动创建一个:
归档时间: |
|
查看次数: |
4806 次 |
最近记录: |