2017-07-25 94 views
-1

的情況如下:Django的內部重定向/ URL重寫

我有一個通過查詢參數支持篩選

  • /app/categories/返回所有類別
  • /app/categories/?project=1返回所有類別項目的URL /app/categories/與ID 1.

我想也有一個網址/app/projects/1/categories將返回與/app/categories/?project=1相同的結果,但不必重寫視圖。是否有可能進行某種內部重定向或URL重寫,以便在請求/app/projects/1/categories時,結果將與調用/app/categories/?project=1相同,但不重定向? (將來我可能需要爲不安全的方法做同樣的事情)

回答

1

製作一個通用函數,它將項目ID作爲參數並返回類別對象。

def get_categories(pk): 
    categories = Category.objects.filter(project=pk) 
    return categories 

要添加您的網址urls.py添加此,

url(r'^projects/(?P<pk>\d+)/categories/$', views.category_view,name="yourname"), 

您views.py看起來應該是這樣,

# /app/categories/?project=1 
def category_view(request): 
    get_categories = get_categories(request.GET.get('project_id')) 
    # your logic 

# /app/projects/1/categories 
def other_category_view(request,pk): 
    get_categories = get_categories(pk) 
    # your logic