Coder Social home page Coder Social logo

djangox's Introduction

DjangoX

A web GUI suite for Django ORM data or API data management

依托于实际项目和生产环境互联网产品的总结积累,继承和扩展Xadmin,DjangoX 努力做 Django 框架的优秀实践项目。

特性

  • 经过生产环境大数据量的考验
  • 管理功能强大,接口灵活
  • 继承 xadmin 的强大的功能,将 xadmin 的内部能力API化
  • 扩展xadmin并持续维护,使用DjangoX不仅能管理 Django ORM 数据还能对接外部非模型数据(如:REST API)
  • 支持 Python2 和 Python3; 兼容 Django1.5+

使用

1.安装 django 和 crispy_forms 模块

easy_install django
easy_install django-crispy_forms

推荐组合

  • django==1.8及以下 + django-crispy_forms==1.4.0
  • django==1.9及以上 + django-crispy_forms==1.6

2.运行

cd example/
python manage.py runserver 81

3.浏览 http://127.0.0.1:81/

  • 登陆:admin
  • 密码:admin

Screenshots

info

info

info

info

Document

站点级配置介绍

模型管理功能配置介绍

菜单控制与配置

示例启动脚本简析

djangox's People

Contributors

jonexiong avatar pyrun13 avatar tonymistark avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

djangox's Issues

示例程序删除内容类型(content type)数据时报错

重现操作:示例程序里面 =》 其他 =》 内容类型 =》 删除一条记录

ps. 对空的数据库进行migrate时也会出现类似的错误 (TypeError: int() argument must be a string or a number, not 'ContentType')

traceback:

Internal Server Error: /xadmin/contenttypes/contenttype/
Traceback (most recent call last):
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/sites.py", line 454, in wrapper
return self.site_view_decor(view, cacheable)(*args, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/sites.py", line 285, in inner
return view(request, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/base.py", line 331, in view
return handler(request, *args, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper
return bound_func(*args, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 110, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func
return func.get(self, type(self))(*args2, **kwargs2)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 45, in method
return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 13, in filter_chain
return func()
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 39, in _inner_method
return func(self, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/list.py", line 279, in post
return self.post_result_list() or self.post_response(*args, **kwargs) or self.get(request, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 45, in method
return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 28, in filter_chain
return filter_chain(filters, token - 1, _inner_method, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 13, in filter_chain
return func()
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 27, in _inner_method
return fm(func if fargs[1] == '__' else func(), *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/plugins/actions.py", line 117, in post_response
ret = self._response_action(ac, queryset)
File "/home/admin/back/DjangoX/example/../xadmin/plugins/actions.py", line 131, in _response_action
return action_view.do_action(queryset)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 45, in method
return filter_chain(filters, len(filters) - 1, _inner_method, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 13, in filter_chain
return func()
File "/home/admin/back/DjangoX/example/../xadmin/views/structs.py", line 39, in _inner_method
return func(self, *args, **kwargs)
File "/home/admin/back/DjangoX/example/../xadmin/views/action_delete.py", line 52, in do_action
queryset, self.opts, self.user, self.admin_site, using)
File "/home/admin/back/DjangoX/example/../xadmin/util.py", line 201, in get_deleted_objects
collector.collect(objs)
File "/home/admin/back/DjangoX/example/../xadmin/util.py", line 252, in collect
return super(NestedObjects, self).collect(objs, source_attr=source_attr, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/deletion.py", line 225, in collect
sub_objs = self.related_objects(related, batch)
File "/home/admin/back/DjangoX/example/../xadmin/util.py", line 257, in related_objects
qs = super(NestedObjects, self).related_objects(related, objs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/deletion.py", line 245, in related_objects
**{"%s__in" % related.field.name: objs}
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/query.py", line 679, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/query.py", line 697, in _filter_or_exclude
clone.query.add_q(Q(*args, **kwargs))
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1310, in add_q
clause, require_inner = self._add_q(where_part, self.used_aliases)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1338, in _add_q
allow_joins=allow_joins, split_subq=split_subq,
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1200, in build_filter
lookups, value)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/fields/related.py", line 1763, in get_lookup_constraint
root_constraint.add(lookup_class(targets[0].get_col(alias, sources[0]), value), AND)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/lookups.py", line 105, in init
self.rhs = self.get_prep_lookup()
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/lookups.py", line 143, in get_prep_lookup
return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 729, in get_prep_lookup
return [self.get_prep_value(v) for v in value]
File "/home/admin/back/py2env/local/lib/python2.7/site-packages/django/db/models/fields/init.py", line 985, in get_prep_value
return int(value)
TypeError: int() argument must be a string or a number, not 'ContentType'

python3版本问题

运行run.cmd出现以下错误
models.ImageField: {'widget': widgets.AdminFileWidget},
AttributeError: module 'xadmin.widgets' has no attribute 'AdminFileWidget'

超级喜欢这个项目

项目集成的有点重,不好配置安装
如果可以的话,上传到pypi,通过pip安装会方便很多。
文档可以加安装使用说明,毕竟集成到原有项目需要指导一下
希望项目越来越强大

runserver 报错

/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/mars/git/DjangoX/example/manage.py runserver 0.0.0.0:8001
Performing system checks...

Unhandled exception in thread started by <function wrapper at 0x10395fb18>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 121, in inner_run
self.check(display_num_errors=True)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 374, in check
include_deployment_checks=include_deployment_checks,
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 361, in _run_checks
return checks.run_checks(**kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/checks/urls.py", line 14, in check_url_config
return check_resolver(resolver)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/checks/urls.py", line 24, in check_resolver
for pattern in resolver.url_patterns:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/functional.py", line 35, in get
res = instance.dict[self.name] = self.func(instance)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/urls/resolvers.py", line 313, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/functional.py", line 35, in get
res = instance.dict[self.name] = self.func(instance)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/urls/resolvers.py", line 306, in urlconf_module
return import_module(self.urlconf_name)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py", line 37, in import_module
import(name)
File "/Users/mars/git/DjangoX/example/start/urls.py", line 2, in
from django.conf.urls import patterns, include, url
ImportError: cannot import name patterns

关于 relfield 插件数据源的问题

在不使用relfield插件的情况下,可以通过重写 get_context 来自定义下拉框的数据,比如限制某一类数据。
但是使用了插件的情况下,自定义的数据就无效了,应该是插件使用了自己的数据源,跳过了get_context,这个问题怎么解决?

是否支持的python3.5版本

如题。你好,djangox很好用,但是测试的时候发现好像不支持python3.5,是否可以支持一下。

win7 from dutils import JSONEncoder ImportError: No module named 'dutils'

self.models_module = import_module(models_module_name)

File "D:\python\lib\importlib__init__.py", line 109, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 2254, in _gcd_import
File "", line 2237, in _find_and_load
File "", line 2226, in _find_and_load_unlocked
File "", line 1200, in _load_unlocked
File "", line 1129, in _exec
File "", line 1471, in exec_module
File "", line 321, in _call_with_frames_removed
File "D:\python\DjangoX-master\example..\xadmin\models.py", line 16, in
from dutils import JSONEncoder
ImportError: No module named 'dutils'

django==1.8
django-crispy_forms==1.5

初次运行报错

win7下
django==1.9
django-crispy_forms==1.6
运行出错
AttributeError: type object 'Migration' has no attribute '_get_next_or_previous_by_FIELD'

runserver直接报错了,求帮助

bogon:example admin$ ./run.sh
Unhandled exception in thread started by <function wrapper at 0x1027c7050>
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(_args, *_kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception
six.reraise(__exception)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
fn(_args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/init.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/apps/config.py", line 90, in create
module = import_module(entry)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/init.py", line 37, in import_module
import(name)
File "/Users/admin/PycharmProjects/DjangoX/example/../xadmin/init.py", line 18, in
from xadmin.sites import site
File "/Users/admin/PycharmProjects/DjangoX/example/../xadmin/sites.py", line 10, in
from django.utils.datastructures import SortedDict

请问DjangoX和xadmin是什么关系?

readme中说是继承和拓展,不过两个项目的代码结构看起来的并不相同,是同一个团队的吗?而且DjangoX最近更新已经是三个月前了,xadmin却三天前还在更新啊

detail显示错误

Internal Server Error: /xadmin/auth/permission/59/detail/
Traceback (most recent call last):
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/core/handlers/base.py", line 174, in get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/core/handlers/base.py", line 172, in get_response
response = response.render()
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/response.py", line 160, in render
self.content = self.rendered_content
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/response.py", line 137, in rendered_content
content = template.render(context, self._request)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/backends/django.py", line 95, in render
return self.template.render(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/base.py", line 206, in render
return self._render(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/base.py", line 197, in _render
return self.nodelist.render(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/base.py", line 992, in render
bit = node.render_annotated(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/django/template/base.py", line 959, in render_annotated
return self.render(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 215, in render
c = self.get_render(context)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 134, in get_render
actual_form.form_html = helper.render_layout(actual_form, node_context, template_pack=self.template_pack)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/helper.py", line 297, in render_layout
template_pack=template_pack
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 138, in render
return self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in get_rendered_fields
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/utils.py", line 73, in render_field
form, form_style, context, template_pack=template_pack,
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 358, in render
fields = self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in get_rendered_fields
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/utils.py", line 73, in render_field
form, form_style, context, template_pack=template_pack,
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 358, in render
fields = self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in get_rendered_fields
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/utils.py", line 73, in render_field
form, form_style, context, template_pack=template_pack,
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 285, in render
fields = self.get_rendered_fields(form, form_style, context, template_pack, **kwargs)
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in get_rendered_fields
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/layout.py", line 102, in
for field in self.fields
File "/Users/zhulin/py2dj/lib/python2.7/site-packages/crispy_forms/utils.py", line 73, in render_field
form, form_style, context, template_pack=template_pack,
TypeError: render() got an unexpected keyword argument 'template_pack'

支持django1.10版本吗

目前使用的环境为python3.5+django1.10,运行了一下,发现运行不了
报错:
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

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.