我正在使用django开发API。我想以下列方式访问我的资源:
{base_url}/employee/{emp_id}
。
此处emp_id
不是GET参数。如何在视图中访问此参数?有没有标准的方法来访问它而无需手动解析URL?
答案 0 :(得分:1)
根据您使用的是基于类的视图还是使用标准视图函数,方法不同。
对于基于类的视图,根据您愿意执行的操作(ListView,DetailView,...),通常您不需要解析URL,只需要在urls.py中指定参数的名称或直接在类定义中的参数名称。
基于班级的观点
urls.py
from mysite.employee.views import EmployeeView
urlpatterns = patterns('',
...
url(r'^employee/(?P<pk>[\d]+)/$', EmployeeView.as_view(), name='employee-detail'),
...
)
雇员/ views.py
class EmployeeView(DetailView):
model = YourEmployeeModel
template_name = 'employee/detail.html'
请阅读knbk指出的文档,因为您需要导入DetailView
就这样,您将根据给出的pk
参数获得您的员工。如果它不存在则会抛出404错误。
在基于功能的视图中,它以类似的方式完成:
urls.py
from mysite.employee.views import EmployeeView
urlpatterns = patterns('',
...
url(r'^employee/(?P<pk>[\d]+)/$', 'mysite.employee.views.employee_detail', name='employee-detail'),
...
)
雇员/ views.py
from django.shortcuts import get_object_or_404
def employee_detail(request, pk):
""" the name of the argument in the function is the
name of the regex group in the urls.py
here: 'pk'
"""
employee = get_object_or_404(YourEmployeeModel, pk=pk)
# here you can replace this by anything
return HttpResponse(employee)
我希望这会有所帮助