Latest posts on Не срабатывает кнопка в форме редактирования записи в БД topichttp://python.su/forum/topic/38432/2020-02-14T16:39:57+02:00Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T16:39:57+02:00Quasar63207413С дебагером разобрался - забыл импортнуть )
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T16:21:13+02:00Quasar63207412Ох, и нифига себе!!! ))) Обычно за мной такого не замечается! Спасибо!<br/>Есть подозрение на автоподставу в VS Code, но это слабое оправдание!<br/>Правда, тут у меня очередная неприятность - после установки дебагера не запускается сервер:<br/>NameError: name ‘debug_toolbar’ is not defined<br/>Всё, вроде, сделал по мануалу. Впрочем, глядя на мою form этого утверждать нельзя. )))
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T15:34:10+02:00FishHook207404<blockquote><em>Quasar63</em><br/><div class="code"><pre> <span class="p"><</span><span class="nt">h1</span><span class="p">></span>Изменить проект<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">form</span> <span class="na">method</span><span class="o">=</span><span class="s">"POST"</span> <span class="na">class</span><span class="o">=</span><span class="s">"post-form"</span><span class="p">></</span><span class="nt">form</span><span class="p">></span> !!!!!!!!!!!!!!!
<span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="na">name</span><span class="o">=</span><span class="s">"csrfmiddlewaretoken"</span> <span class="na">value</span><span class="o">=</span><span class="s">"75h0MQYsX6cc9dBI6UJ0WRYx25wpG8dz76LdLmS0KXGh27Rs1sdzXcHLwGIf2XDf"</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_name"</span><span class="p">></span>Name:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"name"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Проект №3"</span> <span class="na">maxlength</span><span class="o">=</span><span class="s">"64"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_name"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_description"</span><span class="p">></span>Description:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">textarea</span> <span class="na">name</span><span class="o">=</span><span class="s">"description"</span> <span class="na">cols</span><span class="o">=</span><span class="s">"40"</span> <span class="na">rows</span><span class="o">=</span><span class="s">"10"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_description"</span><span class="p">></span>
Это описание Проекта №3<span class="p"></</span><span class="nt">textarea</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_assigner"</span><span class="p">></span>Assigner:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">select</span> <span class="na">name</span><span class="o">=</span><span class="s">"assigner"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_assigner"</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">""</span><span class="p">></span>---------<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"1"</span> <span class="na">selected</span><span class="p">></span>rolex<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"2"</span><span class="p">></span>larimarit<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"3"</span><span class="p">></span>larimar<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"></</span><span class="nt">select</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_datebegin"</span><span class="p">></span>Datebegin:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"datebegin"</span> <span class="na">value</span><span class="o">=</span><span class="s">"31.01.2020"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_datebegin"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_dateend"</span><span class="p">></span>Dateend:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"dateend"</span> <span class="na">value</span><span class="o">=</span><span class="s">"20.02.2020"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_dateend"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span><span class="p">></span>Сохранить<span class="p"></</span><span class="nt">button</span><span class="p">></span>
<span class="p"></</span><span class="nt">form</span><span class="p">></span>
</pre></div></blockquote><br/>А вас не смущает место помеченное как !!!!!!!!!<br/>Ваша форма пустая. У вас открывающий тег и тут же закрывающий.<br/>И я даже понял почему<br/><br/><div class="code"><pre> <span class="cp">{%</span> <span class="k">block</span> <span class="nv">project</span> <span class="cp">%}</span>
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Изменить проект<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">form</span> <span class="na">method</span><span class="o">=</span><span class="s">»POST»</span> <span class="na">class</span><span class="o">=</span><span class="s">»post-form»</span> <span class="na">action</span><span class="o">=</span><span class="s">»»</span><span class="p">></</span><span class="nt">form</span><span class="p">></span>!!!!!!!
<span class="cp">{%</span> <span class="k">csrf_token</span> <span class="cp">%}</span>
<span class="cp">{{</span> <span class="nv">form.as_p</span> <span class="cp">}}</span>
<span class="p"><</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">»submit»</span> <span class="na">class</span><span class="o">=</span><span class="s">»save</span> <span class="na">btn</span> <span class="na">btn-primary</span><span class="err">»</span><span class="p">></span>Сохранить<span class="p"></</span><span class="nt">button</span><span class="p">></span>
<span class="p"></</span><span class="nt">form</span><span class="p">></span>!!!!!
<span class="cp">{%</span> <span class="k">endblock</span> <span class="cp">%}</span>
</pre></div><br/>Зачем же вы тег закрываете два раза?
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T14:37:12+02:00Quasar63207403<div class="code"><pre> <span class="p"><</span><span class="nt">body</span><span class="p">></span>
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Изменить проект<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">form</span> <span class="na">method</span><span class="o">=</span><span class="s">"POST"</span> <span class="na">class</span><span class="o">=</span><span class="s">"post-form"</span><span class="p">></</span><span class="nt">form</span><span class="p">></span>
<span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"hidden"</span> <span class="na">name</span><span class="o">=</span><span class="s">"csrfmiddlewaretoken"</span> <span class="na">value</span><span class="o">=</span><span class="s">"75h0MQYsX6cc9dBI6UJ0WRYx25wpG8dz76LdLmS0KXGh27Rs1sdzXcHLwGIf2XDf"</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_name"</span><span class="p">></span>Name:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"name"</span> <span class="na">value</span><span class="o">=</span><span class="s">"Проект №3"</span> <span class="na">maxlength</span><span class="o">=</span><span class="s">"64"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_name"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_description"</span><span class="p">></span>Description:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">textarea</span> <span class="na">name</span><span class="o">=</span><span class="s">"description"</span> <span class="na">cols</span><span class="o">=</span><span class="s">"40"</span> <span class="na">rows</span><span class="o">=</span><span class="s">"10"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_description"</span><span class="p">></span>
Это описание Проекта №3<span class="p"></</span><span class="nt">textarea</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_assigner"</span><span class="p">></span>Assigner:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">select</span> <span class="na">name</span><span class="o">=</span><span class="s">"assigner"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_assigner"</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">""</span><span class="p">></span>---------<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"1"</span> <span class="na">selected</span><span class="p">></span>rolex<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"2"</span><span class="p">></span>larimarit<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"><</span><span class="nt">option</span> <span class="na">value</span><span class="o">=</span><span class="s">"3"</span><span class="p">></span>larimar<span class="p"></</span><span class="nt">option</span><span class="p">></span>
<span class="p"></</span><span class="nt">select</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_datebegin"</span><span class="p">></span>Datebegin:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"datebegin"</span> <span class="na">value</span><span class="o">=</span><span class="s">"31.01.2020"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_datebegin"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">p</span><span class="p">><</span><span class="nt">label</span> <span class="na">for</span><span class="o">=</span><span class="s">"id_dateend"</span><span class="p">></span>Dateend:<span class="p"></</span><span class="nt">label</span><span class="p">></span> <span class="p"><</span><span class="nt">input</span> <span class="na">type</span><span class="o">=</span><span class="s">"text"</span> <span class="na">name</span><span class="o">=</span><span class="s">"dateend"</span> <span class="na">value</span><span class="o">=</span><span class="s">"20.02.2020"</span> <span class="na">required</span> <span class="na">id</span><span class="o">=</span><span class="s">"id_dateend"</span><span class="p">></</span><span class="nt">p</span><span class="p">></span>
<span class="p"><</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">"submit"</span><span class="p">></span>Сохранить<span class="p"></</span><span class="nt">button</span><span class="p">></span>
<span class="p"></</span><span class="nt">form</span><span class="p">></span>
<span class="p"></</span><span class="nt">body</span><span class="p">></span>
</pre></div>
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T14:30:46+02:00FishHook207402<strong>Quasar63</strong><br/>Ну а что в отрендереной странице? Посмотрите в браузере исходник.<br/><br/><a href="https://pypi.org/project/django-debug-toolbar/">https://pypi.org/project/django-debug-toolbar/</a>
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T13:12:43+02:00Quasar63207400Похоже, форма даже не отсылается на сервер - в инспекторе кода в браузере полная тишина! Ни ошибок, ничего! Поэтому и до обработки form_invalid дело не доходит. (((<br/>И, вообще, научите, как правильно отлаживать код в django? Может есть какие-то модули для логов и т.п.?
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T11:38:54+02:00FishHook207399<strong>Quasar63</strong><br/>Могу только предположить, что ваша форма не валидируется, попробуйте методы form_valid и form_invalid
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T10:57:49+02:00Quasar63207398<u>models.py:</u><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">Project</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">CharField</span><span class="p">(</span><span class="n">max_length</span><span class="o">=</span><span class="mi">64</span><span class="p">)</span>
<span class="n">description</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">TextField</span><span class="p">()</span>
<span class="n">datebegin</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span>
<span class="n">dateend</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateField</span><span class="p">()</span>
<span class="n">assigner</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'auth.User'</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> <span class="n">related_name</span><span class="o">=</span><span class="s1">'project_assigner'</span><span class="p">)</span>
<span class="n">datecreate</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">DateTimeField</span><span class="p">(</span><span class="n">auto_now_add</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">author</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s1">'auth.User'</span><span class="p">,</span> <span class="n">on_delete</span><span class="o">=</span><span class="n">models</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">)</span>
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="s1">' ('</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">datebegin</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1">.%m.%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">' - '</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">dateend</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s1">'</span><span class="si">%d</span><span class="s1">.%m.%Y'</span><span class="p">)</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">)</span>
</pre></div><br/><u>forms.py</u><br/><div class="code"><pre> <span class="k">class</span> <span class="nc">ProjectForm</span><span class="p">(</span><span class="n">forms</span><span class="o">.</span><span class="n">ModelForm</span><span class="p">):</span>
<span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">Project</span>
<span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'name'</span><span class="p">,</span> <span class="s1">'description'</span><span class="p">,</span> <span class="s1">'assigner'</span><span class="p">,</span> <span class="s1">'datebegin'</span><span class="p">,</span> <span class="s1">'dateend'</span><span class="p">]</span>
</pre></div><br/>Ещё, по совету знатоков, убрал экшн из формы в шаблоне, model_form заменил на form_class и пришлось из вьюхи убрать<br/><br/><div class="code"><pre> <span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="err">‘</span><span class="n">name</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">description</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">assigner</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">datebegin</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">dateend</span><span class="err">’</span><span class="p">],</span>
</pre></div>т.к. вылезло: Specifying both ‘fields’ and ‘form_class’ is not permitted.<br/><br/>Но ничего не изменилось. (
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-14T10:42:56+02:00FishHook207397<strong>Quasar63</strong><br/>А что в Project и ProjectForm?
Веб-технологии :: Django :: Не срабатывает кнопка в форме редактирования записи в БД
2020-02-13T20:30:49+02:00Quasar63207395Django 3.0.2<br/><br/>Коллеги, помогите!<br/>Данные в форму подтягиваются, но по кнопке «Сохранить» сохранения изменений в БД не происходит.<br/>Чую, что-то тут просто, но никак не получается. )<br/>=========<br/><br/>view.py:<br/>———<br/><div class="code"><pre> <span class="kn">from</span> <span class="nn">django.views.generic</span> <span class="kn">import</span> <span class="n">View</span><span class="p">,</span> <span class="n">TemplateView</span><span class="p">,</span> <span class="n">ListView</span><span class="p">,</span> <span class="n">DetailView</span>
<span class="kn">from</span> <span class="nn">django.views.generic.edit</span> <span class="kn">import</span> <span class="n">UpdateView</span><span class="p">,</span> <span class="n">DeleteView</span>
<span class="k">class</span> <span class="nc">ProjectUpdate</span><span class="p">(</span><span class="n">UpdateView</span><span class="p">):</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">Project</span>
<span class="n">model_form</span> <span class="o">=</span> <span class="n">ProjectForm</span>
<span class="n">fields</span> <span class="o">=</span> <span class="p">[</span><span class="err">‘</span><span class="n">name</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">description</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">assigner</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">datebegin</span><span class="err">’</span><span class="p">,</span> <span class="err">‘</span><span class="n">dateend</span><span class="err">’</span><span class="p">]</span>
<span class="n">template_name</span> <span class="o">=</span> <span class="err">‘</span><span class="n">project_update</span><span class="o">.</span><span class="n">html</span><span class="err">’</span>
</pre></div>urls.py:<br/>———<br/><div class="code"><pre> <span class="n">path</span><span class="p">(</span><span class="err">‘</span><span class="n">projects_list</span><span class="o">/</span><span class="n">project_update</span><span class="o">/<</span><span class="nb">int</span><span class="p">:</span><span class="n">pk</span><span class="o">></span><span class="err">’</span><span class="p">,</span> <span class="n">views</span><span class="o">.</span><span class="n">ProjectUpdate</span><span class="o">.</span><span class="n">as_view</span><span class="p">(),</span> <span class="n">name</span> <span class="o">=</span> <span class="err">‘</span><span class="n">project_update</span><span class="err">’</span><span class="p">),</span>
</pre></div><br/>project_update.html:<br/>———————<br/><div class="code"><pre> {% block project %}
<span class="p"><</span><span class="nt">h1</span><span class="p">></span>Изменить проект<span class="p"></</span><span class="nt">h1</span><span class="p">></span>
<span class="p"><</span><span class="nt">form</span> <span class="na">method</span><span class="o">=</span><span class="s">»POST»</span> <span class="na">class</span><span class="o">=</span><span class="s">»post-form»</span> <span class="na">action</span><span class="o">=</span><span class="s">»»</span><span class="p">></</span><span class="nt">form</span><span class="p">></span>
{% csrf_token %}
{{ form.as_p }}
<span class="p"><</span><span class="nt">button</span> <span class="na">type</span><span class="o">=</span><span class="s">»submit»</span> <span class="na">class</span><span class="o">=</span><span class="s">»save</span> <span class="na">btn</span> <span class="na">btn-primary</span><span class="err">»</span><span class="p">></span>Сохранить<span class="p"></</span><span class="nt">button</span><span class="p">></span>
<span class="p"></</span><span class="nt">form</span><span class="p">></span>
{% endblock %}
</pre></div>