【问题标题】:How to pass url value in django to views如何将 django 中的 url 值传递给视图
【发布时间】:2017-11-17 22:03:44
【问题描述】:

我的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号40?

【问题讨论】:

标签: python django django-rest-framework


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果你想从 url 中获取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&lt;id&gt;\d+)/$', views.get_requests),

    我假设您的网址是正确的,并且他已经在里面创建了 id。所以我只是给了你我如何根据这个ID拾取对象。

    【讨论】:

      【解决方案3】:

      上面代码中的视图函数名称有错字。所以,应该是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 中,定义视图函数以接受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

      【讨论】:

        猜你喜欢
        • 2021-08-31
        • 2017-11-11
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-21
        相关资源
        最近更新 更多