@Treeesk

Код не работает. В чем моя ошибка?

Моя проблема заключается в том, что при нажатии на кнопку "Изменить" ничего не происходит. А я хочу, чтобы у меня появлялся доступ к полю с задачей, я мог его изменить, сохранить, и в случае случайного захода нажать кнопку "Отмена". Написал код и по логике он должен работать, но почему-то это не так.

views.py:

from django.shortcuts import render,redirect
from .models import Today
from django.views.decorators.http import require_http_methods


def index(request):
    todos = Today.objects.all()
    return render(request, 'today.html', {'todos':todos})

@require_http_methods(['POST'])
def add(request):
    tasks = request.POST["tasks"]
    task = Today(tasks=tasks)
    task.save()
    return redirect('todoist:index')
                    
def delete(request, today_id):
    todo = Today.objects.get(id=today_id)
    todo.delete()
    return redirect('todoist:index')

def update(request, today_id):
    todo = Today.objects.get(id=today_id)
    todo.tasks = request.POST.get('tasks')
    todo.save()
    return redirect('todoist:index')

def edit(request, today_id):
    todo = Today.objects.get(id=today_id)
    todo.edit_mode = True
    todo.save()
    return redirect('todoist:index')

urls.py:

from django.urls import path
from . import views

app_name = 'todoist'

urlpatterns = [
    path('', views.index, name='index'),
    path('add', views.add, name='add'),
    path('delete/<int:today_id>/', views.delete, name='delete'),
    path('update/<int:today_id>/', views.update, name='update'),
    path('edit/<int:today_id>/', views.edit, name='edit'),
]

today.html:

<title>Todoist</title>
<h1>Сегодня</h1>
<h2>Задачи</h2>
<form method="POST" action="{% url 'todoist:add' %}" >{% csrf_token %}
        <input type="text" name='tasks' pattern=".{2,}" required title='Минимум два символа!!!'>
    <button type="submit" class="save btn btn-default">Добавить задачу</button>
</form>

<ol>
{% for todo in todos %}
<div>
  {% if todo.edit_mode %}
    <form action="{% url 'todoist:update' today_id=todo.id %}" method="POST"> {% csrf_token %}
        <input type="text" name="tasks" value="{{ todo.tasks }}">
        <button type="submit" class="save btn btn-default">Сохранить</button>
    </form>
    <a href="{% url 'todoist:index' %}">Отмена</a>
  {% else %}
    <li><p>{{ todo.tasks }}</p></li>
    <a href="{% url 'todoist:delete' today_id=todo.id %}">Удалить</a>
    <a href="{% url 'todoist:edit' today_id=todo.id %}">Изменить</a>
  {% endif %}
</div>
{% endfor %}
</ol>
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
@aleks-th
{% if todo.edit_mode %}

У тебя вот это условие никогда не выполняется.
Где ты передаешь этот параметр в шаблон ?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы