如何将django中的url值传递给视图

时间:2017-11-17 13:13:23

标签: python django django-rest-framework

我的url.py如下,

from myapp import views
urlpatterns = [
   url(r'^myapp/get_requests/$', views.get_requests),
]

现在我的views.py如下,

@api_view(['GET'])
def get_request(request):
   #How can I get request ID (base url here)?
   return HttpResponse('test')

在上面,如果我在浏览器中请求url,如下所示,它到达我的get_request方法,

http://localhost:8080/myapp/get_requests/

但是当我在下面尝试使用一些ID时,同样会给出错误404,

http://localhost:8080/myapp/get_requests/40

现在如何在我的views.py方法中获取此ID号码?

3 个答案:

答案 0 :(得分:2)

将您的urls.py更改为

from myapp import views
urlpatterns = [
       url(r'^myapp/get_requests/(?P<id>[0-9]+)$', views.get_requests),
]

现在在你的视图中获取id参数

@api_view(['GET'])
def get_request(request,id):
    print id
    return HttpResponse('test')

有关详细信息,请查看django docs

答案 1 :(得分:0)

如果你想从网址中选择id,你只需写下这样的内容:

@login_required
def MyFunction(request, id) :

    myobject = get_object_or_404(MyModel, pk=id)

    context = {
            "myobject" : myobject,
    }

    return render(request, 'my template.html', context)

您的网址,您必须添加url(r'^myapp/get_requests/(?P<id>\d+)/$', views.get_requests),

我认为你的网址是正确的,而且他已经在id里面创建了。所以我给了你如何根据这个ID拿起物品。

答案 2 :(得分:0)

上述代码中的视图函数名称中存在拼写错误。因此,get_requests不是get_request

现在回答您的问题,它会引发您404 - Not Found,因为您没有确定应该在网址后面的ID的实际路线。

要开始接受ID,请在urls.py中为其添加另一条路线,其中包含数字重复文字:

from myapp import views
urlpatterns = [
   url(r'^myapp/get_requests/$', views.get_requests),
   url(r'^myapp/get_requests/(?P<id>\d+)$', views.get_requests_with_id),
]

并在views.py中,定义视图函数以接受id参数,如下所示:

@api_view(['GET'])
def get_requests_with_id(request, id):
   # Now use id for whatever you want
   return HttpResponse('test')

您可以在此处阅读官方文档:https://docs.djangoproject.com/en/1.11/topics/http/urls/#named-groups