首页 > 解决方案 > 在 django 中对 url1 执行任务后如何重定向到 url2?

问题描述

我有一个edit-scholarship.html,您可以在其中通过传递名称和类型来搜索奖学金,然后选择该奖学金并通过从 url传递奖学金 ID在update-scholarship.html中对其进行编辑。现在更新奖学金后,网址变为 http://127.0.0.1:8000/admin/updatescholarship/50

50 是传入 url 的奖学金 ID

现在,当我尝试进入项目中的仪表板时,网址变为 http://127.0.0.1:8000/admin/updatescholarship/dashboard

我不希望在 updatescholarship之后附加仪表板。网址应该是 http://127.0.0.1:8000/admin/dashboard

这是我的编辑奖学金视图

def admin_editscholarship(request):
    if request.method == 'POST':
        name = request.POST['sch_name']
        type = request.POST['sch_type']
        schdets = ScholarshipDetails.objects.filter(name = name,type = type)
        if schdets is not None:
            #if something exists in scholarship details, then print it
            print('Scholarship found')

    else:
        schdets = None

    return render(request,'admin-editscholarship.html',{'schdets':schdets})

这是我的更新奖学金视图

def admin_updatescholarship(request,pk=None):
    #can update the new data in the selectd scholarship
    if pk:
        sch = ScholarshipDetails.objects.get(pk = pk)


    if request.method == 'POST':
        form = EditScholarshipForm(request.POST,instance=sch)
        if form.is_valid():
            form.save()
            print('\nform saved')
            args = {'form' : form}

            messages.success(request,'Successfully updated')
            return render(request,'admin-editscholarship.html',args)

这是我的urls.py

    path('admin/dashboard',views.admin_dash),
    path('admin/addscholarship',views.admin_addscholarship),
    path('admin/editscholarship',views.admin_editscholarship),
    url(r'^admin/updatescholarship/(?P<pk>\d+)$',views.admin_updatescholarship,name = 
    'updatescholarship'),
    path('admin/students',views.admin_students),
    path('admin/requests',views.admin_requests)

标签: pythondjangourlredirectview

解决方案


您可以使用 django 重定向重定向到其他 url

from django.shortcuts import redirect

def fn_test(request):
    task here
    return redirect('path_to_redirect/')

推荐阅读