我正在使用drf-nested-routers包构建嵌套API .
但是/domains/1/nameservers/给了我所有的名字服务器,不仅仅是一个与域#1相关的名字服务器
我认为问题是我使用默认教程NameServerViewSet实现
class NameserverViewSet(viewsets.ModelViewSet):
queryset = Nameserver.objects.all()
serializer_class = NameserverSerializer
Run Code Online (Sandbox Code Playgroud)
请帮我正确编码.
以下是drf-nested-routers github页面的示例.
drf-nested-routers提供了嵌套路由器,可以在下面生成url模式
\ domain\< - 域名列表\域{pk}\< - 一个域名,来自{pk]
\ domain {domain_pk} \nameservers\< - 域的名称服务器
{domain_pk}\domain {domain_pk} \nameservers\{pk}\< - 来自{pk}的特定域名服务器,来自{domain_pk}的域名
这是一个例子:
# urls.py
from rest_framework_nested import routers
from views import DomainViewSet, NameserverViewSet
(...)
router = routers.SimpleRouter()
router.register(r'domains', DomainViewSet)
domains_router = routers.NestedSimpleRouter(router, r'domains', lookup='domain')
domains_router.register(r'nameservers', NameserverViewSet)
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^', include(domains_router.urls)),
)
Run Code Online (Sandbox Code Playgroud) 我正在尝试利用包 drf-nested-routers 在我的 API 中创建嵌套路由。
我试图跟随文档(https://github.com/alanjds/drf-nested-routers)并阅读多个 Stackoverflow 线程,希望能找出这个问题。
我想创建一个 NestedSimpleRouter。这是我目前在 routers.py 文件中的内容:
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework_nested import routers
from api_v1.viewsets import DeviceViewSet, BreadcrumbViewSet
router = DefaultRouter()
router.register(r'devices', DeviceViewSet, base_name='devices')
device_breadcrumbs_router = routers.NestedSimpleRouter(router, r'breadcrumbs', lookup='breadcrumb')
device_breadcrumbs_router.register(r'breadcrumbs', BreadcrumbViewSet, base_name='breadcrumbs')
api_url_patterns = [
path('', include(router.urls)),
path('', include(device_breadcrumbs_router.urls)),
]
Run Code Online (Sandbox Code Playgroud)
然后我将 包含api_url_patterns在我的 urls.py 文件中:
from django.contrib import admin
from django.urls import path, include
from .routers import api_url_patterns
urlpatterns = [
path('api/v1/', include(api_url_patterns)),
path('admin/', admin.site.urls), …Run Code Online (Sandbox Code Playgroud) 我目前正在启动一个简单的任务应用程序,我正在使用 Django 2.0.7、DRF 3.8.2 和 drf-nested-routes 0.90.2
我有这些模型:
class Client(TimeStampedModel):
"""
This model describes a client for the railroader. It can be created by the manager in the back office
We have at least one internal Client, which is Seelk, for internal projects
"""
name = models.CharField(max_length=255, unique=True)
description = models.TextField(null=True)
is_active = models.BooleanField(default=True)
def __str__(self):
return "{} : {}".format(self.name, self.description)
class Project(TimeStampedModel):
"""
This model represents a project for a client, which we are gonna track actions on
""" …Run Code Online (Sandbox Code Playgroud) python django nested-routes django-rest-framework drf-nested-routers
我想知道控制移动应用程序 API 版本的最佳实践是什么。
要求
path('v1/auth/', include('authentication.urls')),
path('v2/auth/', include('authentication.urls2')), # Example
path('v1/api/', include('contentstudio.urls')),
Run Code Online (Sandbox Code Playgroud) django django-models django-views django-rest-framework drf-nested-routers
我正在使用Django Rest Framework为我的项目开发 web api。在我的项目中,我需要像这样构建嵌套的 api 端点:
/users/ - to get all users
/users/<user_pk> - to get details of a particular user
/users/<user_pk>/mails/ - to get all mails sent by a user
/users/<user_pk>/mails/<pk> - to get details of a mail sent by a user
Run Code Online (Sandbox Code Playgroud)
所以,我使用drf-nested-routers来方便编写和维护这些嵌套资源。
我希望我所有端点的输出都有超链接,用于获取每个嵌套资源的详细信息以及其他详细信息,如下所示:
[
{
"url" : "http://localhost:8000/users/1",
"first_name" : "Name1",
"last_name": "Lastname"
"email" : "name1@xyz.com",
"mails": [
{
"url": "http://localhost:8000/users/1/mails/1",
"extra_data": "This is a extra data",
"mail":{
"url": "http://localhost:8000/mails/3"
"to" : "abc@xyz.com", …Run Code Online (Sandbox Code Playgroud) python django serialization django-rest-framework drf-nested-routers