如何在python django中访问url部分?

时间:2015-04-15 22:24:08

标签: django django-views

我正在使用django开发API。我想以下列方式访问我的资源: {base_url}/employee/{emp_id}

此处emp_id不是GET参数。如何在视图中访问此参数?有没有标准的方法来访问它而无需手动解析URL?

1 个答案:

答案 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)

我希望这会有所帮助