Добрый день!(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. Можете ли вы подтолкнуть меня в правильном направлении (подсказка/ясный учебник/пример) или объяснение, в котором я принимаю неправильный выбор? Заранее спасибо!
Благодарим вас за ответ. Когда блог создается, он всегда не опубликован, в подробном представлении показана ссылка для публикации. Как я могу заставить эту ссылку опубликовать блог правильно? – Nrzonline
@Nrzonline. Все, что вам нужно сделать, это создать ссылку и нанести на нее 'url', в котором вы будете захватывать' pk' 'объекта'. После этого вам нужно написать представление, которое получит экземпляр объекта с использованием 'pk', захваченного в URL-адресе, и обновит объект« object.published = True »объекта, после чего вы просто сохраните объект и вернете« HttpResponseRedirect ». В этой ситуации можно использовать представление базовой функции. Вы также можете использовать ajax, если вы не хотите перезагружать страницу, но это зависит от того, что вы хотите сделать. – pythad
спасибо. Для меня это чувствовало, что мне пришлось обернуть его в GCBVs, я действительно не знаю, почему. Во всяком случае, он работает сейчас. Еще раз спасибо! – Nrzonline