[英]Confused with /app_name/page or app_name/page
我很困惑是否应该以/
开头的路径开始? 例如,这是我在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)
在渲染行中
返回render(request,'rango / add_page.html',context_dict)
该行不是以/
开头。 但是,在以下情况下:
返回HttpResponseRedirect('/ rango / category /'+ category_name_slug +'/')
我必须从/
开始。 请解释我什么时候应该使用“ /”,什么时候不使用。
在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/
如果URL并非以“ /”开头,则该URL只是附加到用户正在访问的URL上。 在这种情况下:
返回HttpResponseRedirect('dashboard /')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.