簡體   English   中英

與/ app_name / page或app_name / page混淆

[英]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 /')

用戶將被帶到http://127.0.0.1:8000/some/other/page/dashboard/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM