我很困惑,我是否应该开始以/
开头的路径?例如,以下是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 +'/')
我必须从/
开始。请解释我何时应该使用'/'而不是。
答案 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 /')