Текст ввода в Django не отображается на главной странице
Я работаю над приложением todo, которое имеет главную страницу, где перечислены все todo. Вы можете нажать на ссылку слева, которая ведет вас на другую страницу (newTodo.html), где вы можете добавить новое задание (текст, срок выполнения и процент того, сколько уже сделано). Я хочу, чтобы тодо сохранялись в db.sqlite, чтобы при обновлении страницы тодо все еще были там.
Моя проблема в том, что всякий раз, когда я пытаюсь добавить новый todo, он не появляется на главной странице.
Я очень новичок в Django/Python, поэтому прошу прощения за мой плохо написанный код (все еще учусь!), я пробовал несколько вещей, но, похоже, ничего не работало.
forms.py
class ListForm (forms.Form):
class Meta:
model = List
fields = ["taskText", "taskDate", "taskPerc"]
models.py
from django.db import models
class List(models.Model):
taskText = models.CharField(max_length=150)
taskDate = models.CharField(max_length=50)
taskPerc = models.IntegerField()
newTodo.html (с использованием Bootstrap)
<form action="/newTodo" method="POST">
{% csrf_token %}
<td scope="row"><input type="text" class="form-control" id="taskText" name="taskText"></td>
<td scope="row"><input type="text" class="form-control" id="taskDate" name="taskDate"></td>
<td scope="row"><input type="text" class="form-control" id="taskPerc" name="taskPerc"></td>
<td><a href="{% url 'home' %}" class="btn btn-success" role="button">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check" viewBox="0 0 16 16">
<path d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z" />
</svg>
</a>
</td>
</form>
urls.py
urlpatterns = [
path('',views.home, name='home'),
path('newTodo/', views.newTodo, name= 'newTodo'),
]
views.py (очень грязно, я знаю, проблема, скорее всего, здесь)
def newTodo(request):
if request.method == 'POST':
taskText = request.POST['taskText']
taskDate = request.POST['taskDate']
taskPerc = request.POST['taskPerc']
# form = ListForm(request.POST or None)
all_tasks = List(taskText=taskText, taskDate = taskDate, taskPerc = taskPerc)
all_tasks.save()
# if form.is_valid():
# form.save()
# all_tasks=List.objects.all
# print(taskText,taskDate)
return render(request, 'newTodo.html', {'all_tasks': all_tasks})
else:
all_tasks = List.objects.all
return render (request, 'newTodo.html', {'all_tasks': all_tasks})
для home.html я пробовал что-то вроде:
{% block content %}
{% if all_tasks%}
{% for things in all_tasks%}
{{ things.taskText }}
{% endfor %}
{% endif %}
{% endblock %}
Я просто хочу сначала увидеть тодос, а потом работать над макетом.
Любая помощь приветствуется!!!