Giter Site home page Giter Site logo

tianpangji / drf_admin Goto Github PK

View Code? Open in Web Editor NEW
512.0 16.0 151.0 1.08 MB

项目基于Django、Django REST framework(DRF)、Channels、Redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC;目前已实现基本功能,满足日常学习使用,工由于工作较忙更新较慢,请见谅......https://tianpangji.github.io/

License: MIT License

Python 100.00%
django django-rest-framework rbac swagger channels redis django-easy-audit python drf-admin drf simpleui

drf_admin's Issues

ModuleNotFoundError: No module named 'easyaudit'

执行 python manage.py migrate 或者 python manage.py runserver 0.0.0.0:8769 都报错 ,提示 ModuleNotFoundError: No module named 'easyaudit' ,这个模块我网上也没搜到 ,是啥原因呢

感谢开源

MultipleDestroyMixin 这个mixin代码逻辑好像有问题

依赖包文件版本需更新

The conflict is caused by:
The user requested hyperlink==19.0.0
autobahn 20.12.3 depends on hyperlink>=20.0.1

The conflict is caused by:
The user requested urllib3==1.26.5
requests 2.24.0 depends on urllib3!=1.25.0, !=1.25.1, <1.26 and >=1.21.1

【咨询问题】在项目任意文件中调试(debug)变量

您好,我在使用这个项目时遇到了一个可能您认为比较简单的问题,想咨询一下,烦请能解答一下。

问题:
比如我想在drf_admin/apps/oauth/views/home.py文件里打印某变量的内容到console或文件。

除了使用print()函数能打印到console,应该如何编写代码呢?烦请提供一个简单的示例,谢谢!

联系求助

小老板,留个邮箱或者其他联系方式呀,我想参与这个的开发

JobsListCreateAPIView(ListCreateAPIView)类的问题

该类下
def get_serializer_class(self):
if self.request.method.lower() == 'get'
这里self下是没有request属性的,运行报错。
可以修改为
class JobsListCreateViewSet(mixins.ListModelMixin, mixins.CreateModelMixin, GenericViewSet):
def get_serializer_class(self):
if self.action == 'list':
return JobsListSerializer

权限问题

请问现有功能权限可以基本使用了吗?权限表路径设置是对应的vue的组件路径还是drf_admin url的路径,谢谢

运行久了后端会报“took too long to shut down and was killed.”错误,导致连接异常

Application instance <Task pending name='Task-25' coro=<AsgiHandler.call() running at D:\iot\django\drf_admin\drf_admin\venv\lib\site-packages\channels\http.py:192> wait_for=<Future pending cb=[_chain_future.._call_che
ck_cancel() at C:\Python310\lib\asyncio\futures.py:385, Task.task_wakeup()]>> for connection <WebRequest at 0x1abf6ef07c0 method=GET uri=/api/oauth/info/ clientproto=HTTP/1.1> took too long to shut down and was killed.

object-level / instance-level / row-level 权限控制

看了项目的权限控制这块,我的理解是可以实现model-level的权限控制,请问能实现实例级别或者对象级别(数据库行级别)的权限控制吗?

举例讲,现有的permission可以实现对自定义model的所有实例增删改查的控制; 如果要实现分别将不同实例分配给不同的用户,请问要怎么实现呢?

权限问题

问下 这个可以实现,权限不通的用户登陆到后台,所显示的功能也不一样,没太看明白 怎么操作

任务调度报错

[2024-05-27 11:36:00,147][INFO][decorators.py:27]==>[Successfully obtained redis distributed lock: Task [sync_redis] : task started]
easy audit had a pre-save exception.
Traceback (most recent call last):
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\utils\encoding.py", line 71, in force_str
s = str(s, encoding, errors)
^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\easyaudit\signals\model_signals.py", line 90, in pre_save
delta = model_delta(old_model, instance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\easyaudit\utils.py", line 56, in model_delta
old_value = get_field_value(old_model, field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\easyaudit\utils.py", line 33, in get_field_value
value = smart_str(getattr(obj, field.name, None))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\utils\encoding.py", line 34, in smart_str
return force_str(s, encoding, strings_only, errors)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\utils\encoding.py", line 75, in force_str
raise DjangoUnicodeDecodeError(s, *e.args)
django.utils.encoding.DjangoUnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte. You passed in b'\x80\x05\x95\x19\x04\x00\x00\x00\x00\x00\x00}\x94(\x8c\x07version\x94K\x01\x8c\x02id\x94\x8c$169b2ead-1bda-11ef-9765-0c9a3c2b86f4\x94\x8c\x04func\x94\x8c!apps.system.jobs.tasks:sync_redis\x94\x8c\x07trigger\x94\x8c\x19apscheduler.triggers.cron\x94\x8c\x0bCronTrigger\x94\x93\x94)\x81\x94}\x94(h\x01K\x02\x8c\x08timezone\x94\x8c\x08builtins\x94\x8c\x07getattr\x94\x93\x94\x8c\x08zoneinfo\x94\x8c\x08ZoneInfo\x94\x93\x94\x8c\t_unpickle\x94\x86\x94R\x94\x8c\rAsia/Shanghai\x94K\x01\x86\x94R\x94\x8c\nstart_date\x94N\x8c\x08end_date\x94N\x8c\x06fields\x94]\x94(\x8c apscheduler.triggers.cron.fields\x94\x8c\tBaseField\x94\x93\x94)\x81\x94}\x94(\x8c\x04name\x94\x8c\x04year\x94\x8c\nis_default\x94\x88\x8c\x0bexpressions\x94]\x94\x8c%apscheduler.triggers.cron.expressions\x94\x8c\rAllExpression\x94\x93\x94)\x81\x94}\x94\x8c\x04step\x94Nsbaubh\x1d\x8c\nMonthField\x94\x93\x94)\x81\x94}\x94(h"\x8c\x05month\x94h$\x89h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1d\x8c\x0fDayOfMonthField\x94\x93\x94)\x81\x94}\x94(h"\x8c\x03day\x94h$\x89h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1d\x8c\tWeekField\x94\x93\x94)\x81\x94}\x94(h"\x8c\x04week\x94h$\x88h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1d\x8c\x0eDayOfWeekField\x94\x93\x94)\x81\x94}\x94(h"\x8c\x0bday_of_week\x94h$\x89h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1f)\x81\x94}\x94(h"\x8c\x04hour\x94h$\x89h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1f)\x81\x94}\x94(h"\x8c\x06minute\x94h$\x89h%]\x94h))\x81\x94}\x94h,Nsbaubh\x1f)\x81\x94}\x94(h"\x8c\x06second\x94h$\x88h%]\x94h'\x8c\x0fRangeExpression\x94\x93\x94)\x81\x94}\x94(h,N\x8c\x05first\x94K\x00\x8c\x04last\x94K\x00ubaube\x8c\x06jitter\x94Nub\x8c\x08executor\x94\x8c\x07default\x94\x8c\x04args\x94)\x8c\x06kwargs\x94}\x94h"\x8c\nsync_redis\x94\x8c\x12misfire_grace_time\x94K\n\x8c\x08coalesce\x94\x88\x8c\rmax_instances\x94K\x01\x8c\rnext_run_time\x94\x8c\x08datetime\x94\x8c\x08datetime\x94\x93\x94C\n\x07\xe8\x05\x1b\x0b$\x00\x00\x00\x00\x94h\x18\x86\x94R\x94u.' (<class 'bytes'>)
easy audit had a post-save exception.
Traceback (most recent call last):
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\easyaudit\signals\model_signals.py", line 156, in post_save
object_json_repr = serializers.serialize("json", [instance])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\core\serializers_init_.py", line 134, in serialize
s.serialize(queryset, **options)
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\core\serializers\base.py", line 131, in serialize
self.handle_field(obj, field)
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\core\serializers\python.py", line 49, in handle_field
self._current[field.name] = self._value_from_field(obj, field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\core\serializers\python.py", line 46, in value_from_field
return value if is_protected_type(value) else field.value_to_string(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\liuhongyang03\PycharmProjects\aigc_service.venv\Lib\site-packages\django\db\models\fields_init
.py", line 1535, in value_to_string
return "" if val is None else val.isoformat()
^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'isoformat'. Did you mean: 'format'?

错误的代码放上了折腾好久

python manage.py loaddata init.json

port = int(port, 10)
ValueError: Problem installing fixture '/home/admin/workspace/develop-django/tmp/drf_admin/init.json': Could not load system.Permissions(pk=1): invalid literal for int() with base 10: 'redis'
(env3.6.2) [admin@us-cor

用户权限问题

您好,可以把权限设计和对应的表设计的实现,列出一个逻辑关系对应吗,谢谢。

关于用户权限的实现

您好!用户权限RbacPermission类的2点建议:
1、判断权限前几步都是读取数据库,增加了系统负担,最好是全redis操作
2、没有录入后台管控的权限,都是全pass的,容易造成漏洞

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.