首页 > 解决方案 > Django:获取对象所在的页面

问题描述

假设我有一堂课Foo。我想知道 Foo 的特定实例将在哪个页面上:例如:api.myapp.com/foos/?page=25

给定一个对象:

Foo.objects.get(id=500),如何确定我的实例将在哪个页面上?

标签: pythondjango

解决方案


Django 本身并没有预先定义您的模型将通过哪个 url 访问。文档——“Django 让你可以随心所欲地设计 URL,没有框架限制”。所以这个过程是相反的:

  • 您定义 url(查看 urls.py 内部)并将其与要调用以进行处理的视图相关联:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('foos/', views.foo_list),
        path('foos/<int:id>/', views.foo_detail),
    
  • 你应该定义视图(通常在views.py中)

  • 在视图中,您可以调用任何模型从数据库中获取数据

你可以使用额外的包来实现你的 API,比如 Django Rest Framework。它具有允许您一次定义一组 url 的路由器。以下将生成 URL 模式,如 '^foos/$' 和 '^foos/{pk}/$':

  • 您在路由器中注册您的网址

    from rest_framework import routers
    
    router = routers.SimpleRouter()
    router.register(r'foos', FooViewSet)
    
  • 你应该实现 FooViewSet 并确保在那里使用你的模型。


推荐阅读