Django方法内的重定向

Django方法内的重定向,django,redirect,Django,Redirect,我有以下资料: def wiki(request,title): entries = [] entry = util.get_entry(title) if entry != None: markdowner = Markdown() entry = markdowner.convert(entry) entries.append(entry) return render(request, "encycl

我有以下资料:

def wiki(request,title):
    entries = []
    entry = util.get_entry(title)
    if entry != None:
        markdowner = Markdown()
        entry = markdowner.convert(entry)
        entries.append(entry)

    return render(request, "encyclopedia/entry.html", {
        "title": title,
        "entries": entries,
    })

def search(request):

    search=request.GET.get('q')
    entries = util.list_entries()

    for entry in entries:
    
        if search == entry:
    #########################################
            entries = []
            entry = util.get_entry(search)
            markdowner = Markdown()
            entry = markdowner.convert(entry)
            entries.append(entry)
            return render(request, "encyclopedia/entry.html", {
                "title": search,
                "entries": entries,
            })
     #######################################

    possible=( [str for str in entries if
        (search in str )] )
    print(possible)
    return render(request, "encyclopedia/search.html")
如果search==entry:是否有方法重定向到或调用wiki(请求、标题)?
从而能够消除散列标记之间的代码?

您可以让Django解析url并正确重定向:

from django.shortcuts import redirect

def search(request):
    search = request.GET.get('q')
    entries = util.list_entries()

    for entry in entries:
        if search == entry:
            return redirect(wiki, title=search)

    possible=( [str for str in entries if
        (search in str )] )
    print(possible)
    return render(request, 'encyclopedia/search.html')
从django.shortcuts导入重定向
def搜索(请求):
search=request.GET.GET('q')
entries=util.list_entries()
对于条目中的条目:
如果搜索==条目:
返回重定向(wiki,title=search)
可能=([str代表条目中的str,如果
(在str中搜索)])
打印(可能)

返回render(请求'encyclopedia/search.html')
这很好,谢谢。您能解释一下def wiki(请求,标题)中的请求是什么,以及为什么在调用重定向时我似乎不需要它吗?@DCR:通过使用
重定向
,您将返回302 HTTP响应,客户端将发出一个新请求。对于URL解析,您永远不会传递请求,因为这不是URL的一部分。