Я создал простое приложение ToDo List, используя Django. Недавно я работал над добавлением сроков к каждой задаче / задаче. Это тоже отлично работает. Но чтобы добавить срок выполнения к любой задаче, пользователям нужно будет go перейти на другой URL, а затем добавить дату. То, что я хочу сделать, - это указать дату исполнения Django прямо на главной странице под каждым заданием. Когда я пытался выполнить sh, я смог успешно отобразить соответствующую форму под каждой задачей, но когда я вводил день и нажимал клавишу ввода, Django выдает Unbound Local Error. Две формы, которые у меня есть на моей единственной домашней странице, это todo_form
, которое представляет собой единственное поле ввода, которое используется для создания новых задач на домашней странице, и это due_form
, которое будет обрабатывать сроки исполнения.
Это моя view.py home
функция
def home(request):
if request.method == "POST":
if "due_form" in request.POST:
due_form = DueDateForm(request.POST)
if due_form.is_valid():
days = due_form.cleaned_data.get("due_date")
if days == "today":
days = 0
elif days == "tomorrow":
days = 1
elif days == "next week":
days = 7
elif days == "yesterday":
days = -1
elif days == "last week":
days = -7
else:
days = int(days)
today = datetime.datetime.today()
due_date = today + datetime.timedelta(days=days)
todo = ToDo.objects.get(pk=int(request.POST.get("id")))
todo.due_date = due_date
todo.save()
messages.success(request, "Due Date added to task")
return redirect("todo-home")
add_form = NewTaskForm()
elif "add_form" in request.POST:
add_form = NewTaskForm(request.POST)
if add_form.is_valid():
title = add_form.cleaned_data.get("title")
todo = ToDo(title=title)
todo.creator = request.user
todo.save()
user = User.objects.get(username=request.user.username)
user.profile.todos += 1
user.save()
messages.success(request, "Your new task has been added")
return redirect("todo-home")
due_form = DueDateForm()
else:
add_form = NewTaskForm()
due_form = DueDateForm()
todos = ToDo.objects.all()
context = {
"todos": todos,
"add_form": add_form, # This is line 98 (that is, where the error occured)
"due_form": due_form
}
return render(request, "ToDo/home.html", context=context)
Части моего дома. html это актуально
<!-- The "todo_form" that handles new tasks -->
<div class="content section">
<form method="POST" name="add_form">
{% csrf_token %}
<fieldset class="form-group dark-mode-assist">
<legend class="border-bottom mb-4">New ToDo!</legend>
{{ add_form|crispy }}
<div class="form-group">
<button class="btn btn-outline-info" type="submit" name="add-task">Add</button>
</div>
</fieldset>
</form>
</div>
.
. { some HTML code that handles task title and other meta data }
.
<!-- This is the "due_form" -->
<div class="content section">
<form method="POST" name="due_form" id={{ todo.pk }}>
{% csrf_token %}
<fieldset class="form-group dark-mode-assist">
<legend class="border-bottom mb-4">Due in (days)</legend>
{{ due_form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Add</button>
</div>
</form>
</div>
Это ошибка, я видя 