html - 返回错误无 Django html 响应?
问题描述
我正在尝试在 Django 中制作待办事项应用程序,每当我在字符串或日期中输入日期时,它都不会向待办事项列表应用程序返回任何内容
模型.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Task(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(null=True, blank=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
deadline = models.CharField(max_length=200)
def __str__(self):
return f'{self.title} {self.deadline}'
class Meta:
order_with_respect_to = 'user'
task_list.html
{% extends 'base/main.html' %} {% block content %}
<script src="https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js"></script>
<div class="header-bar">
<div>
<h1>Hello {{request.user|title}}</h1>
<h3 style="margin:0">You have <i>{{count}}</i> incomplete task{{ count|pluralize:"s" }}</h3>
</div>
{% if request.user.is_authenticated %}
<a href="{% url 'logout' %}">Logout</a> {% else %}
<a href="{% url 'login' %}">Login</a> {% endif %}
</div>
<div id="search-add-wrapper">
<form method="GET" style="display: flex;">
<input type='text' name='search-area' placeholder="Search your task" value="{{search_input}}">
<input class="button" type="submit" value='Search'>
</form>
{% if tasks|length > 0 %}
<a id="add-link" href="{% url 'task-create' %}">+</a>
{% endif %}
</div>
<!-- Hidden form. Form submits new item positions -->
<form style="display: none;" id="reorderForm" method="post" action="{% url 'task-reorder' %}">
{% csrf_token %}
<input type="hidden" id="positionInput" name="position">
</form>
<div id="tasklist" class="task-items-wrapper">
{% for task in tasks %}
<div class="task-wrapper" data-position="{{task.pk}}">
<div class="task-title">
{% if task.complete %}
<div class="task-complete-icon"></div>
<i><s><a href="{% url 'task-update' task.id %}">{{task}} - {{task.deadline}}</a></s></i>
{% else %}
<div class="task-incomplete-icon"></div>
<a href="{% url 'task-update' task.id %}">{{task}} - {{task.deadline}}</a> {% endif %}
</div>
<div class="task-controls">
<a class="delete-link" href="{% url 'task-delete' task.id %}">×</a>
<span class="handle"> ⠇</span>
</div>
</div>
{% empty %}
<div style="text-align: center; padding-bottom: 10px; line-height: 1em;">
<h3>No new tasks are created.</h3>
<h3>Create a <a style="text-decoration: none; color: #e53935;" href="{% url 'task-create' %}">New task</a> ! </h3>
</div>
{% endfor %}
</div>
<script>
var taskList = document.getElementById("tasklist");
var reorderForm = document.getElementById("reorderForm");
var positionInput = document.getElementById("positionInput");
let sortable = Sortable.create(taskList, {
handle: '.handle',
ghostClass: 'dropArea',
chosenClass: 'selectedTask',
});
function reordering() {
const rows = document.getElementsByClassName("task-wrapper");
let pos = [];
for (let row of rows) {
pos.push(row.dataset.position);
}
console.log(pos.join(","))
positionInput.value = pos.join(',');
reorderForm.submit();
}
document.ondrop = reordering
</script>
{% endblock content %}
task_form.html
{% extends 'base/main.html' %}
{% block content %}
<div class="header-bar">
<a href="{% url 'tasks' %}">← Back</a>
</div>
<div class="card-body">
<form method="POST" action="">
{% csrf_token %}
{{form.as_p}}
<input class="button" type="submit" value="Submit">
</form>
</div>
{% endblock content %}
视图.py
from django.shortcuts import render, redirect
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormView
from django.urls import reverse_lazy
from django.contrib.auth.views import LoginView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
# Imports for Reordering Feature
from django.views import View
from django.shortcuts import redirect
from django.db import transaction
from .models import Task
from .forms import PositionForm
class CustomLoginView(LoginView):
template_name = 'base/login.html'
fields = '__all__'
redirect_authenticated_user = True
def get_success_url(self):
return reverse_lazy('tasks')
class RegisterPage(FormView):
template_name = 'base/register.html'
form_class = UserCreationForm
redirect_authenticated_user = True
success_url = reverse_lazy('tasks')
def form_valid(self, form):
user = form.save()
if user is not None:
login(self.request, user)
return super(RegisterPage, self).form_valid(form)
def get(self, *args, **kwargs):
if self.request.user.is_authenticated:
return redirect('tasks')
return super(RegisterPage, self).get(*args, **kwargs)
class TaskList(LoginRequiredMixin, ListView):
model = Task
context_object_name = 'tasks'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['tasks'] = context['tasks'].filter(user=self.request.user)
context['count'] = context['tasks'].filter(complete=False).count()
search_input = self.request.GET.get('search-area') or ''
if search_input:
context['tasks'] = context['tasks'].filter(
title__contains=search_input)
context['search_input'] = search_input
return context
class TaskDetail(LoginRequiredMixin, DetailView):
model = Task
context_object_name = 'task'
template_name = 'base/task.html'
class TaskCreate(LoginRequiredMixin, CreateView):
model = Task
fields = ['title', 'description', 'complete', 'deadline']
success_url = reverse_lazy('tasks')
def form_valid(self, form):
form.instance.user = self.request.user
return super(TaskCreate, self).form_valid(form)
class TaskUpdate(LoginRequiredMixin, UpdateView):
model = Task
fields = ['title', 'description', 'complete', 'deadline']
success_url = reverse_lazy('tasks')
class DeleteView(LoginRequiredMixin, DeleteView):
model = Task
context_object_name = 'task'
success_url = reverse_lazy('tasks')
def get_queryset(self):
owner = self.request.user
return self.model.objects.filter(user=owner)
class TaskReorder(View):
def post(self, request):
form = PositionForm(request.POST)
if form.is_valid():
positionList = form.cleaned_data["position"].split(',')
with transaction.atomic():
self.request.user.set_task_order(positionList)
return redirect(reverse_lazy('tasks'))
有谁知道如何作为约会返回?为什么它没有返回?在待办事项列表上可能不会发布结果?D 你认为是意见有问题吗?
解决方案
推荐阅读
- java - Spring DataSource:EmbeddedDatabaseBuilder addScript() 抛出 FileNotFoundException
- mysql - MySQL启动,然后停止,错误MY-013236,指定数据目录/usr/local/mysql-8.0.18-macos10.14-x86_64/data/不可用
- python - Python:你能用一行代码将枚举传递给一个函数吗?
- c# - 如何在 Xamarin.Android 中使用 C# 找到所选图像的文件路径?
- powershell - 在 PowerShell 中查找数据集的统计模式
- html - 如何为 amp-ima-video 添加隐藏式字幕?
- sql-server - TSQL 年数低于 1000
- excel - Excel VBA 未正确录制宏
- node.js - 如何从远程构建自动配置詹金斯用户输入阶段?
- .htaccess - 如何在 URL 末尾添加斜杠?