Интроспективный администратор Джанго: Как это работает? - PullRequest
0 голосов
/ 05 ноября 2010

Я не очень хочу знать Джанго. На самом деле меня больше интересует администратор.Меня интересует то, как они анализируют модели для создания административного бэк-энда.

Я просмотрел исходный код Django и нашел немного информации, но, поскольку это такой большой проект, мне было интересно, есть лименьшие примеры того, как они это делают?

Это всего лишь личный проект, чтобы лучше понять Python.Я думал, что изучение интроспекции объектов будет хорошим способом сделать это.

Ответы [ 3 ]

4 голосов
/ 05 ноября 2010

С Django это немного больше, чем самоанализ. Модели используют метакласс для регистрации, я избавлю вас от сложностей всего, что связано с этим, но администратор не анализирует модели при просмотре.

Вместо этого процесс регистрации создает на модели объект _meta со всеми данными, необходимыми для администратора и ORM. Вы можете увидеть метакласс ModelBase в django/db/models/base.py, как вы можете видеть в функции __new__, он просматривает все поля, чтобы добавить их к объекту _meta. Сам объект _meta генерируется динамически с использованием определения класса Meta в модели.

Вы можете увидеть результат с print SomeModel._meta или print SomeModel._meta.fields

1 голос
/ 05 ноября 2010

Это может помочь вам начать:

>>> class Foo:
...   x = 7
...
>>> f = Foo()
>>> dir(f)
['__doc__', '__module__', 'x']
>>> getattr(f, 'x')
7
0 голосов
/ 05 ноября 2010

Если вы действительно хотите знать, как это работает для изучения Python, я бы посоветовал взглянуть на исходный код. На самом деле это довольно хорошо задокументировано.

http://code.djangoproject.com/browser/django/trunk/django/contrib/admin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...