2017-07-25 152 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