删除项目并同时反向查找URL

克莱里

我正在Django中构建日历应用程序。我已经实现了使用户能够在他/她的周中添加/删除重点的功能。由于突出显示在每个星期的页面上,因此我想在从数据库中删除突出显示后将用户返回该页面。但是,我的remove_note()方法采用2个参数(request,note_id)。在该方法中,我在数据库中查询与该笔记相关联的星期,以便可以将用户重定向到相应week_number的week_view。我的想法-有没有办法从week_view.html中传递note_id和week_number来减少数据库调用?我尝试过,但本人无法完全到达那里。谢谢!

views.py

from django.shortcuts import render, get_object_or_404, redirect
from week.models import Week, Note
from week.forms import NoteForm


def index(request):

    week_list = Week.objects.filter(user_id=request.user.id).order_by('week_number')

    context = {
        'week_list': week_list,
        'cal_width': range(52),
    }
    return render(request, 'cal/index.html', context)


def week_view(request, week_number):
    if request.method == "POST":
        week = get_object_or_404(Week, week_number=week_number, user_id=request.user.id)
        form = NoteForm(request.POST)
        if form.is_valid():
            form = form.cleaned_data
            new_note = Note(text=form['text'], week=week)
            new_note.save()

        context = {
            'week': week,
            'form': NoteForm(),
            'notes': week.note_set.all(),
        }
        return render(request, 'cal/week_view.html', context)
    else:
        week = get_object_or_404(Week, week_number=week_number, user_id=request.user.id)

        context = {
            'week': week,
            'form': NoteForm(),
            'notes': week.note_set.all(),
        }
        return render(request, 'cal/week_view.html', context)


def remove_note(request, note_id):
    note = Note.objects.get(id=note_id)
    week = Week.objects.get(id=note.week.id, user_id=request.user.id)
    note.delete()
    return redirect('week_view', week_number=week.week_number)

week_view.html

{% extends 'base.html' %}

{% block content %}
<p><a href="{% url 'index' %}">Back to Calendar</a></p>

You are viewing week number {{week.week_number}} of your life.
<p>
The week of: {{week.date}}

<p>
    <form method="POST" action="{% url 'week_view' week.week_number %}">
    {% csrf_token %}
    {{ form }}
    <input type="Submit" value="Add Highlight">
    </form>



Highlights:
{% for note in notes %}
    <li>{{note}} <a href="{% url 'remove_note' note_id=note.id %}">Delete</a> </li>
{% endfor %}

{% endblock %}

urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('<int:week_number>/', views.week_view, name='week_view'),
    path('remove_note/<int:note_id>/', views.remove_note, name='remove_note'),
]

models.py

from django.db import models
from datetime import date, timedelta


class Week(models.Model):
    id = models.AutoField(primary_key=True)
    user_id = models.IntegerField()
    week_number = models.IntegerField()
    text = models.TextField(blank=True)
    date = models.DateField(null=True)

    def __str__(self):
        return "O"

    @property
    def is_past(self):
        return self.date <= date.today()

    @property
    def is_current_week(self):
        return self.date <= date.today() and self.date > (date.today() - timedelta(7))


class Note(models.Model):
    text = models.CharField(max_length=255, blank=True)
    week = models.ForeignKey(Week, on_delete=models.CASCADE, default=1, null=False)

    def __str__(self):
        return self.text
伊恩·谢尔文顿

您可以在remove_note网址和视图中添加其他参数

path('remove_note/<int:note_id>/<int:week_number>/', views.remove_note, name='remove_note')

def remove_note(request, note_id, week_number):
    note = Note.objects.get(id=note_id).delete()
    return redirect('week_view', week_number=week_number)

然后,通过week_numberurl标签

{% url 'remove_note' note_id=note.id week_number=week.week_number %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Haskell Data.Map查找并同时删除

来自分类Dev

使用mod_rewrite删除.php扩展名并同时清理GET URL

来自分类Dev

加载局部视图并同时更改URL

来自分类Dev

添加项目并同时从列表中删除具有固定长度的最有效方法

来自分类Dev

Laravel:从url中删除public,同时也将项目分开

来自分类Dev

查找文件,然后将其移动并同时重命名?

来自分类Dev

如何返回变量并同时重置/删除它

来自分类Dev

显示重复次数并同时删除重复次数?

来自分类Dev

如何从Knockout.js删除嵌套对象并同时删除渲染的模板

来自分类Dev

Django中的部分反向URL查找

来自分类Dev

django url 解析器反向查找

来自分类Dev

无法在[whence]部分中使用1查找文件并同时写入内容

来自分类Dev

SQL查询-查找值并同时从其他表中获取数据

来自分类Dev

根据名称查找文件,并同时通过重命名移动它们

来自分类Dev

删除文件,同时使用查找排除文件

来自分类Dev

将数组转换为哈希,删除重复的键并同时添加值

来自分类Dev

如何同时删除列表中的多个项目

来自分类Dev

如何同时删除列表中的多个项目

来自分类Dev

逗号分隔列表,同时删除项目

来自分类Dev

在Maven项目中查找依赖项(反向依赖项)

来自分类Dev

如何从网站上抓取项目名称,并同时进入输入项目链接和分析说明的循环?

来自分类Dev

按下键并同时单击

来自分类Dev

查找最大元素及其在泛型数组中的位置,并同时返回一个数组

来自分类Dev

如何将自己的php包GitHub项目与composer集成在一起使用并同时进行开发

来自分类Dev

IntelliJ IDEA是否具有类似于eclipse的“工作区”的概念,并同时打开多个maven项目?

来自分类Dev

如何查找和恢复已删除的项目?

来自分类Dev

Symfony启用查找和删除项目

来自分类Dev

列出“查找和删除列表中的项目”

来自分类Dev

如何在Unix中基于分隔符将文件拆分为多个文件,并同时删除分隔符

Related 相关文章

  1. 1

    Haskell Data.Map查找并同时删除

  2. 2

    使用mod_rewrite删除.php扩展名并同时清理GET URL

  3. 3

    加载局部视图并同时更改URL

  4. 4

    添加项目并同时从列表中删除具有固定长度的最有效方法

  5. 5

    Laravel:从url中删除public,同时也将项目分开

  6. 6

    查找文件,然后将其移动并同时重命名?

  7. 7

    如何返回变量并同时重置/删除它

  8. 8

    显示重复次数并同时删除重复次数?

  9. 9

    如何从Knockout.js删除嵌套对象并同时删除渲染的模板

  10. 10

    Django中的部分反向URL查找

  11. 11

    django url 解析器反向查找

  12. 12

    无法在[whence]部分中使用1查找文件并同时写入内容

  13. 13

    SQL查询-查找值并同时从其他表中获取数据

  14. 14

    根据名称查找文件,并同时通过重命名移动它们

  15. 15

    删除文件,同时使用查找排除文件

  16. 16

    将数组转换为哈希,删除重复的键并同时添加值

  17. 17

    如何同时删除列表中的多个项目

  18. 18

    如何同时删除列表中的多个项目

  19. 19

    逗号分隔列表,同时删除项目

  20. 20

    在Maven项目中查找依赖项(反向依赖项)

  21. 21

    如何从网站上抓取项目名称,并同时进入输入项目链接和分析说明的循环?

  22. 22

    按下键并同时单击

  23. 23

    查找最大元素及其在泛型数组中的位置,并同时返回一个数组

  24. 24

    如何将自己的php包GitHub项目与composer集成在一起使用并同时进行开发

  25. 25

    IntelliJ IDEA是否具有类似于eclipse的“工作区”的概念,并同时打开多个maven项目?

  26. 26

    如何查找和恢复已删除的项目?

  27. 27

    Symfony启用查找和删除项目

  28. 28

    列出“查找和删除列表中的项目”

  29. 29

    如何在Unix中基于分隔符将文件拆分为多个文件,并同时删除分隔符

热门标签

归档