2015-11-18 4 views
1

Добрый день!(GCBV) Как вызвать собственный метод для публикации блога (UpdateView)

Рядом с Java Я пытаюсь изучить некоторые Python/Django, так как компания, в которой я работаю, также собирается использовать Django. Тем не менее, я пытаюсь выяснить, как работать с представлениями общего класса. Надеюсь, кто-то может дать мне некоторую информацию, которая поможет мне в правильном направлении решить мою проблему.

У меня есть небольшое приложение для блога, содержащее возможности CRUD (создание, чтение, обновление, удаление) с помощью GCBV (представления на основе общего класса). По мнению Detail У меня есть ссылка на публикацию:

{% url 'blogs:publish' blog.pk %}

, который я хочу использовать как:

url(r'^(?P[0-9]+)/publish/$', xxx, name='publish')

Я просто не могу заставить его работать. Я попытался (и Двойники попытки) создать метод в классе Update (UpdateView) называется публиковать (самостоятельно, ** kwargs): и сделать шаблон URL-адрес, чтобы назвать его:

url(r'^(?P[0-9]+)/publish/$', views.Update.publish(), name='publish')

, который, очевидно, Безразлично работайте, иначе вы не читали бы это прямо сейчас;) Я читал довольно много документов/google/etc, но в основном это основанная на функциях или учебник останавливается после CRUD. Можете ли вы подтолкнуть меня в правильном направлении (подсказка/ясный учебник/пример) или объяснение, в котором я принимаю неправильный выбор? Заранее спасибо!

ответ

1

UpdateView используется для обновления, но вы можете взглянуть на CreateView. Он используется для создания объектов.

Также вам нужно понять, что вы не можете назвать метод, так как даже трудно представить, как он должен работать. GCBV - это просто последовательности уже написанных методов, которые облегчают вашу жизнь. Вы можете перезаписать базовые методы GCBV и создать свой собственный, который затем можно использовать внутри представления, но вы не можете называть их в URL-адресах.

+0

Благодарим вас за ответ. Когда блог создается, он всегда не опубликован, в подробном представлении показана ссылка для публикации. Как я могу заставить эту ссылку опубликовать блог правильно? – Nrzonline

+1

@Nrzonline. Все, что вам нужно сделать, это создать ссылку и нанести на нее 'url', в котором вы будете захватывать' pk' 'объекта'. После этого вам нужно написать представление, которое получит экземпляр объекта с использованием 'pk', захваченного в URL-адресе, и обновит объект« object.published = True »объекта, после чего вы просто сохраните объект и вернете« HttpResponseRedirect ». В этой ситуации можно использовать представление базовой функции. Вы также можете использовать ajax, если вы не хотите перезагружать страницу, но это зависит от того, что вы хотите сделать. – pythad

+0

спасибо. Для меня это чувствовало, что мне пришлось обернуть его в GCBVs, я действительно не знаю, почему. Во всяком случае, он работает сейчас. Еще раз спасибо! – Nrzonline