Có một tài liệu tham khảo Django?


8

Tôi mới đến Django. Tôi đã tìm thấy các hướng dẫn chủ đề chính thức https://docs.djangoproject.com/en/1.3/ một nơi tuyệt vời để học hỏi. Nhưng bây giờ tôi đang ở một nơi mà tôi cần tham khảo nhanh để xem các đối tượng có phương thức gì, đối số cần có là gì, nó trả về v.v., giống như các tài liệu Python hoặc tài liệu Java. Nhiều tài liệu tham khảo hơn là một hướng dẫn. Các tài liệu chính thức là phong cách hướng dẫn và không nhất thiết phải có tham chiếu đến tất cả các phương pháp.

Am i thiếu cái gì ở đây? Làm tài liệu chính thức Django đủ cho tất cả mọi người?


1
@Glycerine Vâng, tôi đã đọc các thư viện trực tiếp để xem các phương pháp làm gì. Tôi vẫn ngạc nhiên khi thấy một dự án quan trọng như Django không có tài liệu tham khảo thư viện.

Câu trả lời:


6

Tôi có thể không chính xác nhưng tôi đã sử dụng django hơn một năm nay và chưa bao giờ tìm thấy một hướng dẫn như vậy.

Hơi đáng tiếc - Tôi muốn có một tài liệu tham khảo chức năng như bạn đã đề cập. Tuy nhiên, là một tài nguyên bổ sung, http://www.djangobook.com/ rất tốt. Tôi đã luôn cân nhắc việc xây dựng một cái, nhưng tôi rất lười biếng.

Ngoài ra còn có một tài liệu tham khảo khác mà bạn có thể sử dụng khi bạn bị mắc kẹt http://www.thedjangoforum.com


7

Python có một cơ chế tích hợp sẵn cho điều đó: docstrings. Thí dụ:

>>> import django.forms
>>> help(django.forms.ModelForm)
Help on class ModelForm in module django.forms.models:

class ModelForm(BaseModelForm)
 |  Method resolution order:
 |      ModelForm
 |      BaseModelForm
 |      django.forms.forms.BaseForm
 |      django.utils.encoding.StrAndUnicode
 |      __builtin__.object
 |  
 |  Data and other attributes defined here:
 |  
 |  __metaclass__ = <class 'django.forms.models.ModelFormMetaclass'>
 |  
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from BaseModelForm:
 |  
 |  __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.util.ErrorList'>, label_suffix=':', empty_permitted=False, instance=None)
 |  
 |  clean(self)

 |  
 |  save(self, commit=True)
 |      Saves this ``form``'s cleaned_data into model instance
 |      ``self.instance``.
 |      
 |      If commit=True, then the changes to ``instance`` will be saved to the
 |      database. Returns ``instance``.
 |  
 |  validate_unique(self)
 |      Calls the instance's validate_unique() method and updates the form's
 |      validation errors if any were raised.
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from django.forms.forms.BaseForm:
 |  
 |  __getitem__(self, name)
 |      Returns a BoundField with the given name.
 |  
 |  __iter__(self)
 |  
 |  __unicode__(self)
 |  
 |  add_initial_prefix(self, field_name)

 |      Add a 'initial' prefix for checking dynamic initial values
 |  
 |  add_prefix(self, field_name)
 |      Returns the field name with a prefix appended, if this Form has a
 |      prefix set.
 |      
 |      Subclasses may wish to override.
 |  
 |  as_p(self)
 |      Returns this form rendered as HTML <p>s.
 |  
 |  as_table(self)
 |      Returns this form rendered as HTML <tr>s -- excluding the <table></table>.
 |  
 |  as_ul(self)
 |      Returns this form rendered as HTML <li>s -- excluding the <ul></ul>.
 |  
 |  full_clean(self)
 |      Cleans all of self.data and populates self._errors and
 |      self.cleaned_data.
 |  
 |  has_changed(self)
 |      Returns True if data differs from initial.
 |  
 |  hidden_fields(self)
 |      Returns a list of all the BoundField objects that are hidden fields.
 |      Useful for manual form layout in templates.
 |  
 |  is_multipart(self)
 |      Returns True if the form needs to be multipart-encrypted, i.e. it has
 |      FileInput. Otherwise, False.
 |  
 |  is_valid(self)
 |      Returns True if the form has no errors. Otherwise, False. If errors are
 |      being ignored, returns False.
 |  
 |  non_field_errors(self)
 |      Returns an ErrorList of errors that aren't associated with a particular
 |      field -- i.e., from Form.clean(). Returns an empty ErrorList if there
 |      are none.
 |  
 |  visible_fields(self)
 |      Returns a list of BoundField objects that aren't hidden fields.
 |      The opposite of the hidden_fields() method.
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from django.forms.forms.BaseForm:
 |  
 |  changed_data
 |  
 |  errors
 |      Returns an ErrorDict for the data provided for the form
 |  
 |  media
 |      Provide a description of all media required to render the widgets on this form
 |  
 |  ----------------------------------------------------------------------
 |  Methods inherited from django.utils.encoding.StrAndUnicode:
 |  
 |  __str__(self)
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors inherited from django.utils.encoding.StrAndUnicode:
 |  
 |  __dict__
 |      dictionary for instance variables (if defined)
 |  
 |  __weakref__
 |      list of weak references to the object (if defined)

Sau đó, bạn có thể tra cứu các tài liệu của các phương pháp riêng lẻ:

>>> help(django.forms.ModelForm.is_valid)
Help on method is_valid in module django.forms.forms:

is_valid(self) unbound django.forms.models.ModelForm method
    Returns True if the form has no errors. Otherwise, False. If errors are
    being ignored, returns False.

1

Cá nhân, tôi thấy việc sử dụng pycharm IDE giúp tăng tốc đáng kể sự phát triển django. Ngoài ra trong trình bao django, bạn có thể sử dụng tính năng ipython để lấy tài liệu và mã nguồn, bằng cách nhập nội dung nào đó và theo sau? (thông tin cơ bản) hay ?? (mã nguồn). Ngoài ra các tính năng ipython khác như hoàn thành tab (chỉ sâu một cấp) rất hữu ích.

In [1]: from django.contrib.auth.models import User

In [2]: User ?
Type:       ModelBase
Base Class: <class 'django.db.models.base.ModelBase'>
String Form:    <class 'django.contrib.auth.models.User'>
Namespace:  Interactive
File:       /usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/contrib/auth/models.py
Docstring:
    Users within the Django authentication system are represented by this model.

    Username and password are required. Other fields are optional.

Constructor information:
Definition: User(self, *args, **kwargs)


In [3]: User ??
Type:             ModelBase
Base Class:       <class 'django.db.models.base.ModelBase'>
String Form:   <class 'django.contrib.auth.models.User'>
Namespace:        Interactive
File:             /usr/local/lib/python2.6/dist-packages/Django-1.2.5-py2.6.egg/django/contrib/auth/models.py
Source:

class User(models.Model):
    """
    Users within the Django authentication system are represented by this model.

    Username and password are required. Other fields are optional.
    """
    username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    email = models.EmailField(_('e-mail address'), blank=True)
    password = models.CharField(_('password'), max_length=128, help_text=_("Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change password form</a>."))
    is_staff = models.BooleanField(_('staff status'), default=False, help_text=_("Designates whether the user can log into this admin site."))
    is_active = models.BooleanField(_('active'), default=True, help_text=_("Designates whether this user should be treated as active. Unselect this instead of deleting accounts."))
    is_superuser = models.BooleanField(_('superuser status'), default=False, help_text=_("Designates that this user has all permissions without explicitly assigning them."))
    last_login = models.DateTimeField(_('last login'), default=datetime.datetime.now)
    date_joined = models.DateTimeField(_('date joined'), default=datetime.datetime.now)
    groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True,
        help_text=_("In addition to the permissions manually assigned, this user will also get all permissions granted to each group he/she is in."))
    user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True)
    objects = UserManager()

        class Meta:
        verbose_name = _('user')
[...]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.