2017-07-02 30 views
3

我只是Django的初學者,這些天我跟着一個mooc學習Django,我想建立我的第一個網站,但是出了點問題,我弄不明白。我想在URLS.py中編寫一個帶參數'cate'的正則表達式,以匹配view.py中的視頻函數,判斷'cate'eequals'編輯器'是否會返回屬性爲「editors_choice」的數據。但是,我發現它沒有改變,所以我在view.py中打印了'cate',發現它始終爲None,我仍然不知道爲什麼。URL在我的Django項目中傳遞參數

以下是我的代碼:

def video(request, cate=None): 
    print(cate) 
    context = {} = 
    if cate is None: 
     video_list = Video.objects.all() 
    if cate == 'editors': 
     video_list = Video.objects.filter(editors_choices=True) 
    else: 
     video_list = Video.objects.all() 
    page_robot = Paginator(video_list, 16) 
    page_num = request.GET.get('page') 
    try: 
     video_list = page_robot.page(page_num) 
    except EmptyPage: 
     video_list = page_robot.page(page_robot.num_pages) # raise HTTP404("Empty") 
    except PageNotAnInteger: 
     video_list = page_robot.page(1) 
    context['video_list'] = video_list 
    return render(request, 'ten_movie.html', context) 

'cate' parameter in urls.py


templete

回答

3

正則表達式的結束串字符添加到第一圖案以防止重疊與第二。

url(r'^video/$', video, name='video'), 
url(r'^video/(?P<cate>[A-Za-z]+)$', video, name='video'), 
+0

我通過在第一個url後添加$來解決它,但沒有更改名稱。我仍然非常感謝你在幾分鐘內解決了我的問題,這讓我奮鬥了好幾天。 – Pan