与/ app_name / page或app_name / page混淆

时间:2016-03-25 18:15:16

标签: python django

我很困惑,我是否应该开始以/开头的路径?例如,以下是django中views.py的一种方法:

@login_required
def add_page(request,category_name_slug=None):
    # check for post method
    print category_name_slug
    try:
        cat = Category.objects.get(slug = category_name_slug)
    except Exception, e:
        cat = None


    if request.method == 'POST':
        print "sjhdfkjsdhkfhjs"
        # means you submitted the form.
        form = PageForm(request.POST)
        a = form.is_valid()
        if a:
            if cat:
                page = form.save(commit = False)
                page.category = cat
                page.views = 0
                page.save()
                print "sdjhfjshk"
                return HttpResponseRedirect('/rango/category/' + category_name_slug + '/')
        else:
            print form.errors

    else:
        form = PageForm()

    context_dict = {'form' : form,'category' : cat, 'slug': category_name_slug}

    return render(request,'rango/add_page.html', context_dict)

在渲染线

  

return render(request,'rango / add_page.html',context_dict)

该行未以/开头。但是,如果是以下行:

  

返回HttpResponseRedirect('/ rango / category /'+ category_name_slug +'/')

我必须从/开始。请解释我何时应该使用'/'而不是。

1 个答案:

答案 0 :(得分:1)

在django中使用render函数时,第二个参数是模板名称。

您指定的字符串相对于您在settings.py中定义的TEMPLATES设置使用。它告诉django模板文件所在的位置。这就是为什么你不在render()

中用'/'开始模板名称的原因

然而,HttpResponseRedirect直接要求重定向的URL。你是否应该在字符串之前添加'/'。

当提供的URL以'/'开头时,无论您从哪里重定向,用户都会被带到相对于网站根目录的确切路径。

例如,如果用户位于http://127.0.0.1:8000/some/other/page/,您使用以下内容重定向用户:

  

返回HttpResponseRedirect('/ dashboard /')

用户将被重定向到http://127.0.0.1:8000/dashboard/

如果网址不以'/'开头,则网址只会附加到用户访问的网址。 在这种情况下:

  

返回HttpResponseRedirect('dashboard /')

用户将被带到http://127.0.0.1:8000/some/other/page/dashboard/