为什么 Django 中的 POST 请求有时有效而其他时间无效? (这几乎是随机的)

Why would POST requests in Django work sometimes and not the other times? (It's almost random)

我有一个 Django CRUD 网络应用程序,它基本上用于向数据库添加值,当页面刷新时,这些值在前端可见,并且有一个按钮可以编辑该条目。它在 90% 的时间里工作得很好。但是会有一个随机的实例,有人使用 UI 添加了一些东西,它被添加到数据库中,但是当刷新时,条目从数据库中消失了!这是我见过的最荒谬的事情。如果代码有问题,它不会永远不会正确添加它。我只是很困惑,为什么它在 90% 的时间里都能很好地增加值,但很少有条目消失的情况。

def index(request, user, created_by):
    if request.POST:
        print(request.POST)
        selected_user = request.POST.get('name_user')
        selected_project = request.POST.get('name_project')
        print(selected_user)
        week_starting = request.POST.get('date')
        hours = request.POST.get('hours')
        activity = request.POST.get('activity')
        selected_tag = request.POST.get('tag')
        # check if record already exists for the same user and same week_starting and selected_project
        # if not then insert to DB
        # else don't insert, say record already exists
        if selected_tag == '':
            check_if_exists = TABLENAME.objects.filter(username=selected_user,
                                                                             week_starting=week_starting,
                                                                             project_id=selected_project, tag_id__isnull=True)
        else:
            check_if_exists = TABLENAME.objects.filter(username=selected_user,
                                                                             week_starting=week_starting,
                                                                             project_id=selected_project,
                                                                             tag_id=selected_tag)
        count = check_if_exists.count()
        print("at insert")
        print("how many same records already exist: ", count)
        if count < 1:
            selected_project_id = TABLENAME.objects.only('project_id').get(
                project_id=request.POST.get('project'))
            print(selected_project)
            if selected_tag == '':
                TABLENAME.objects.create(username=selected_user, project_id=selected_project_id,
                                                               week_starting=week_starting, forecast_hours=hours,
                                                               description=activity,
                                                               created_on=timezone.now(), created_by=created_by)
                add_status = "added - no tag"
            else:
                TABLENAME.objects.create(toggl_username=selected_user,
                                                               project_id=selected_project_id,
                                                               week_starting=week_starting, forecast_hours=hours,
                                                               description=activity, tag_id=selected_tag,
                                                               created_on=timezone.now(), created_by=created_by)
                add_status = "added - with tag"
            flash_text = 'Record inserted'
            print(add_status)
            # selected_tag = 0
            return render(request, 'hello_v2.html',
                          {'flash_text': flash_text, 'users': users, 'selected_user': selected_user,
                           'projects': projects, 'date': date, 'tags': tags,
                           'selected_tag': selected_tag, 'selected_project': selected_project})
            # add if tag is not empty then pass tags like here else don't - do the same thing for ID
        else:
            flash_text = 'Record already exists'
            return render(request, 'hello_v2.html',
                          {'flash_text': flash_text, 'users': users, 'selected_user': selected_user,
                           'projects': projects, 'date': date, 'tags': tags, 'selected_tag': selected_tag,
                           'selected_project': selected_project})

    else:
        print("Loading page")
        print(date)
        selected_tag = request.GET.get('tag_id')
        return render(request, 'hello_v2.html', {'users': users, 'date': date, 'projects': projects, 'tags': tags, 'selected_tag': selected_tag})

我通过打印它们来跟踪 POST 请求,在条目从数据库中消失的情况下,我看不到打印的 POST 请求...所以我'我真的很困惑 我还有一个编辑方法,允许用户编辑一个条目,有时当用户编辑一个条目然后它消失了,所以也许我在那里有问题?但这只是一些编辑导致的,而不是全部。

你应该这样检查请求。

def index(request, user, created_by):
    if request<b>.method == "POST":</b>
        print(request.POST)
        selected_user = reques</pre>