@whiteBlackness

Где найти стандартные правила наименования url, class base view и методов моделей?

Есть ли стандартные или хотя бы общепринятые правила именования для django?

Например я называю view
class BlaBlaCreate(CreateView):
...

class BlaBlaUpdate(UpdateView):
....

class BlaBlaDetail(DetailView):
...


к ним делаю url
url(r'^blabla/create'$, BlaBlaCreate.as_vew(), name='create_blabla')
url(r'^^blabla/(?P<pk>\d+)/edit$', BlaBlaUpdate.as_vew(), name='edit_blabla')
url(r'^blabla/(?P<pk>\d+)$', BlaBlaDetail.as_vew(), name='blabla_detail')

соответственно в модели у меня есть следующие методы для получения url
class BlaBla(Model):

  def get_absolute_url(self):
    ...
   def get_edit_url(self):
   ...

   @staticmethod
   def get_create_url():
    ...


Но что-то я начинаю путаться где у меня edit а где update.
Да и хочется сделать более стандартные именования.
Есть ли где документация по стандартным названиям? Что-то никак не могу найти.
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
DmitryVoronkov
@DmitryVoronkov
Python Developer
Все что хочешь в рамках PEP8
Я обычно делаю так:
articles/models/article.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models


class Article(models.Model):
    title = models.CharField(max_lenght=32, verbose_name=_('name'))


articles/views/article.py:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.views import generic


class ArticleMixin(object):
    fields = ['title']
    model = Article
    paginate_by = 30

    def get_success_url(self):
        return reverse('articles_article_index')


class Index(ArticleMixin, generic.ListView):
    template_name = 'articles/index.html'


class Create(ArticleMixin, generic.CreateView):
    template_name = 'articles/create.html'


class Update(ArticleMixin, generic.UpdateView):
    template_name = 'articles/update.html'


class Delete(ArticleMixin, generic.DeleteView):
    template_name = 'articles/delete.html'


index = Index.as_view()
create = Create.as_view()
update = Update.as_view()
delete = Delete.as_view()


articles/urls.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.conf.urls import url
from django.conf.urls import patterns

from articles.views import article

urlpatterns = patterns('',
                       url(r'^$', article.index, name='articles_article_index'),
                       url(r'^update/(?P<pk>[\w-]+)/$', article.update, name='articles_article_update'),
                       url(r'^delete/(?P<pk>[\w-]+)/$', article.delete, name='articles_article_delete'),
                       url(r'^create/$', article.create, name='articles_article_create'),
                       )
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Посмотрите проекты на github-e, поучитесь как говориться у мастеров.
Поищите style guide
Ответ написан
Комментировать
sim3x
@sim3x
Именуй самым понятным для себя способом
пока вью не стало жирным от функционала - 'ArticleUpdateView'
когда стало - 'ArticleCustomiseSomeShitView'
перфикс Article поможет при наборе кода при наличии intellisense, а суффикс 'View' поможет отличить класс от моделей и других классов
Сосредоточься не на именовании, а на коментариях к классам

использовать delete = ArticleDeleteView.as_view() стоит с осторожностью - не уверен, что as_view lazy, что может привести к веселому дебагу
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы