【问题标题】:Django How do i Insert data without refreshing or reloading pageDjango 如何在不刷新或重新加载页面的情况下插入数据
【发布时间】:2020-06-19 08:19:52
【问题描述】:

用户插入数据后如何在django中返回当前页面(request.post)

场景:

如果教师插入学生的成绩,当前页面将重新加载或刷新

我不知道我是否可以通过使用重定向来实现它。

def grades(request):
    V_insert_data = StudentSubjectGrade(
          ...
    )
  V_insert_data.save()

  //redirect the same page


def teacher(request):
    if request.method != 'POST':
        raise Http404('Only POSTs are allowed')
    try:
         ......
         return render(request, 'Homepage/index.html')
    except EmployeeUser.DoesNotExist:
        messages.warning(request, 'Your Username and password are Incorrect.')
        ….
    return render(request, 'Homepage/TeacherLogin.html')

urls.py

path('teacher/', Homepage.views.teacher, name='teacher'),
path('grades/', Homepage.views.grades, name='grades'),

这是我得到的错误

更新

当我改变我的时候

  response = redirect(teacher)
  return response

到这里

return redirect(reverse('teacher'))

我得到相同的结果

更新再次

当我尝试这个时

def grades(request):
    V_insert_data = StudentSubjectGrade(
          ...
    )
  V_insert_data.save()
return HttpResponseRedirect(request.path_info)

我收到此错误

我已经清除了我的 cookie,但仍然出现此错误

【问题讨论】:

  • 我不明白你想在这里实现什么。但是您收到的错误是因为您正在向视图发送GET 请求,并且从您指定的视图中,如果requests.method 不是POST,那么您正在引发Http404 错误。
  • 我想要达到 @mohammedwazeem 先生的目标是,如果老师插入学生的成绩,当前页面只会重新加载

标签: python django


【解决方案1】:
def grades(request):
    V_insert_data = StudentSubjectGrade(
          ...
    )
  V_insert_data.save()

  return redirect(reverse('teacher'))


def teacher(request):
    if request.method == 'POST':
        try:
             ......
             return render(request, 'Homepage/index.html')
        except EmployeeUser.DoesNotExist:
            messages.warning(request, 'Your Username and password are Incorrect.')
            ….
    return render(request, 'Homepage/TeacherLogin.html')

【讨论】:

  • 好的,我想我发现了你的错误,那是在你的视图功能中,让我编辑我的答案
  • 不建议更改 request.method != 'POST':
  • 因为如果老师登录他们的帐户就会出现这个错误
  • 但是如果你被重定向到教师页面,它总是会 GET 请求并且总是抛出这个错误
  • 是的,这就是为什么我在这里问Django在表单提交后返回当前页面..因为我不知道如果老师插入学生成绩页面将如何刷新或重新加载
【解决方案2】:

如果你想在表单提交成功后重定向到同一页面返回HttpResponseRedirect。让我在这里给出一个示例视图

from django.http import HttpResponseRedirect

def grades(request):
    if request.method == 'POST':
        # do your stuff here (saving data to db)
        return HttpResponseRedirect(request.path_info)
    return render(request, template, {'form': your_form})

【讨论】:

  • 我的 def 成绩(请求)怎么样:?
  • 如果您希望在提交表单或其他操作后将视图重定向到同一页面,您可以返回 HttpResponseRedirect(request.path_info)
  • 为什么要在def teacher(request)下申请HttpResponseRedirect(request.path_info):?
  • 你没有得到我的问题 @mohammed wazeem 先生,我说当老师提交学生成绩时它会重定向到同一页面,我认为这里的逻辑在 """def成绩(请求):“””不在“”def教师(请求):“”
  • 现在怎么样。我以为您正在尝试在教师视图中实现重定向。但无论如何,您的问题是如何在提交表单后重定向到同一页面。所以你可以在基于函数的视图中使用HttpResponseRedirect(request.path_info)。并且不要忘记在处理之前检查请求方法
猜你喜欢
  • 2011-08-17
  • 2017-06-27
  • 1970-01-01
  • 2022-11-29
  • 2013-08-20
  • 2011-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多