我感到困惑的是,我是否应该从/开始一条路径?例如,下面是我在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)在渲染行中
返回呈现(请求,'rango/add_page.html',context_dict)
该行不是用/启动的。但是,如果是这样的话:
返回HttpResponseRedirect(‘/rango/类别/’+ category_name_slug + '/')
我得从/开始。请解释一下我什么时候应该使用/,什么时候不用。
发布于 2016-03-25 18:57:41
在django中使用render函数时,第二个参数是模板名。
您指定的字符串相对于您在TEMPLATES中定义的settings.py设置使用。它告诉django模板文件位于何处。这就是为什么在render()中不使用'/‘开始模板名的原因。
然而,HttpResponseRedirect直接请求URL重定向。这取决于您是否应该在字符串之前添加“/”。
当所提供的URL以'/‘开头时,无论您从何处重定向,用户都会被带到相对于网站根目录的确切路径。
例如,如果用户在http://127.0.0.1:8000/some/other/page/,并且使用以下方法重定向用户:
返回HttpResponseRedirect(‘/仪表板/’)
用户将被重定向到http://127.0.0.1:8000/dashboard/
如果URL不以'/‘开头,则只将url附加到用户访问的url中。在这种情况下:
返回HttpResponseRedirect(‘仪表板/’)
用户将被带到http://127.0.0.1:8000/some/other/page/dashboard/
https://stackoverflow.com/questions/36225534
复制相似问题