繁体   English   中英

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

[英]How to pass url value in django to views

我的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')

在上面的代码中,如果我确实在浏览器中使用下面的网址进行请求,则它到达了我的get_request方法,

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

但是当我尝试如下所示的ID时,同样会出现错误404,

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

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

将您的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文档

如果您想从网址中获取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来拾取对象。

上面的代码中,视图函数名称中有一个错字。 因此,它将是get_requests而不是get_request

现在问您的问题,它会引发“ 404 - Not Found因为您定义的实际路由中没有在URL后应包含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 ,定义view函数以接受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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM