情况如下:
我有支持按查询参数过滤的网址/app/categories/
/app/categories/
返回所有类别/app/categories/?project=1
返回ID为1的项目的所有类别。我想要一个URL /app/projects/1/categories
,它将返回与/app/categories/?project=1
相同的结果,但不必重写视图。是否可以进行某种内部重定向或URL重写,以便在请求/app/projects/1/categories
时,结果与调用/app/categories/?project=1
相同,但不重定向? (将来我可能需要为不安全的方法做同样的事情)
答案 0 :(得分:1)
创建一个将项目id作为参数的公共函数,并返回categories对象。
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