django - 单击按钮不更新 django 中的视图
问题描述
我有一个包含任务列表的视图,并尝试在单击时进行简单的任务分配,但它不起作用。请问可以支持吗?我在控制台中看到这样的内容:“POST /task/allocate HTTP/1.1”302 0。谢谢。
大号
模型:
class Task(models.Model):
name = models.CharField(max_length=248)
note = models.TextField(blank=True, null=True)
priority = models.NullBooleanField(blank=True, null=True)
status = models.IntegerField(choices=TASK_STATUS, default=TASK_STATUS[0][0])
placed_date = models.DateField(auto_now=True)
due_date = models.DateTimeField(blank=True, null=True)
completed = models.BooleanField(default=False)
completed_date = models.DateField(blank=True, null=True)
created_by = models.ForeignKey(
User,
null=True,
blank=True,
related_name="hana_created_by",
on_delete=models.CASCADE)
assigned_to = models.ForeignKey(User,
null=True,
blank=True,
related_name="hana_assigned_to",
on_delete=models.CASCADE)
网址:
path('excel_table', ex_views.ExcelTableView.as_view(), name = "excel-table"),
path("task/add", ex_views.TaskAddView.as_view(), name="task-add"),
path("task/<int:task_id>/", ex_views.TaskDetailView.as_view(), name="task-detail"),
path("task/<int:pk>/edit", ex_views.TaskEditView.as_view(), name="task-update"),
path("task/allocate", views.task_allocator, name="task-allocate"),
意见:
class TaskAllocateView(View):
def post(self, request):
if request.POST.get("task_allocate") is not None:
tasks = Task.objects.filter(assigned_to=None)
for task in tasks:
task.assigned_to = random.choice(User.objects.all())
task.status = 1
task.save()
current_site = get_current_site(request)
subject = render_to_string('email/assigned_subject.txt', {"task": task})
body = render_to_string('email/assigned_body.txt', {
'task': task,
'site': current_site,
})
to_email = task.assigned_to.email
email = EmailMessage(subject, body, to=[to_email])
email.send()
if tasks:
messages.success(request, "Tasks succesfully allocated to your employees. Check status!")
messages.success(request, ('Notification email has been sent to assignees!'))
else:
messages.warning(request, "All tasks already allocated!")
messages.warning(request, ('Notification email already sent!'))
return redirect(reverse("excel-table"))
return redirect(reverse("excel-table"))
模板:
<form method="POST" action="{% url "task-allocate" %}" role="form" class="d-inline">
{% csrf_token %}
<div style="display:inline;">
<button class="btn btn-info btn-sm" type="submit" name="task_allocate">
Task Allocate
</button>
</div>
</form>
解决方案
if t.assigned_to != None:
t.status = 1
t.save()
messages.success(request, "Tasks succesfully allocated to your employees. Check status!")
return redirect(reverse("excel-table"))
这个 if 永远不会被执行,因为 created_by 将保持为 Non 直到你保存它。
t.assigned_to = random.choice(User.objects.all())
if t.assigned_to != None:
你这样做是因为这个 t.assigned_to 不再是 None 了,它仍然是 None 因为你没有保存。
我希望这个对你有帮助。
推荐阅读
- mysql - mysql 检查讲师是否可以在选定的时间上课
- javascript - 如何在javascript中查看函数的构造函数属性?
- java - 扩展 GuiceApplicationLoader 时出错:未绑定 play.Application 的实现。同时定位play.Application
- tensorflow - 使用可馈送迭代器正确使用 `tf.contrib.data.prefetch_to_device()`
- jquery - jQuery找到孩子的第一个孩子
- r - Foreach 循环 - 找不到对象
- css - CSS占位符动画 - 如何处理“可选”状态
- javascript - JavaScript 回调混淆行为
- ios - swift-Tableview 单元格 UIButton 背景颜色
- r - 用 R (r-cran) 消除在一段时间内不变的观测值