【问题标题】:I don't see my objects on the Django site我在 Django 网站上看不到我的对象
【发布时间】:2017-12-22 08:10:24
【问题描述】:

我尝试创建 Django 内置 API 文档,但是我无法将对象添加到左侧的列表中。当我打开localhost:8000/docs/ 时,我看不到the official Django REST documentation 顶部的对象列表(在本例中为sn-ps 和用户)。目前我正在尝试这种方式:

urls.py:

from rest_framework.documentation import include_docs_urls

API_TITLE = 'API title'
API_DESCRIPTION = '..df.'

urlpatterns = [
 url(r'^docs/', include_docs_urls(title=API_TITLE, description=API_DESCRIPTION)),
]

models.py:

class Object1(models.Model):

    user = models.ForeignKey(User)
    value = models.FloatField()

admin.py 基于developer.mozilla.org:

from django.contrib import admin
from .models import Object1
# Register your models here.


admin.site.register(Object1)

我也基于https://docs.djangoproject.com,并尝试使用这个 admin.py 版本:

class Object1Admin(admin.ModelAdmin):
    pass
admin.site.register(Object1, Object1Admin)

我也在使用其他版本,但我也没有得到积极的结果。有什么建议吗?

更新 我试图在我的视图文件中创建 ViewSet 并将其导入 url 以按照 Raja Simon 的建议定义路由器:

views.py:

from rest_framework import viewset


class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()

urls.py:

from rest_framework.routers import DefaultRouter

# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'users', views.UserViewSet)

urlpatterns = [
    url(r'^', include(router.urls))
]

但是我没有达到我想要的。此时我在 Django 网站上的列表是这样的:

但我想在这种情况下列出我的对象:

【问题讨论】:

  • 请创建视图集并将它们添加到您的路由器。然后你应该在文档中看到...
  • 我在我的项目中只使用视图。是否可以使用它们代替视图集?
  • 我不这么认为。看到这个 coreapi 与 Django RestFramework 紧密耦合而不是 Django...
  • 所以我必须将整个源代码从 views.py 更改为视图集?
  • 我认为这是github.com/encode/django-rest-framework/issues/5003 的问题。我也有类似的问题。

标签: python django python-3.x django-models django-rest-framework


【解决方案1】:

改变这个

user = models.ForeignKey(User)

user = models.ForeignKey('auth.User')

它应该可以工作。

【讨论】:

  • 不幸的是,它没有帮助。
【解决方案2】:

只需在您的视图文件中创建 ViewSet 并将其导入 url 以定义路由器

views.py

from rest_framework import viewset


class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()

urls.py

# Create a router and register our viewsets with it.
router = DefaultRouter()
router.register(r'users', views.UserViewSet)

url(r'^', include(router.urls)),

【讨论】:

  • url(r'^', include(router.urls)), 应该在urlpatterns
  • 抱歉回复晚了是的。它应该在urlpatterns 列表中
  • urls.py 中的urlpatterns = format_suffix_patterns(urlpatterns) 有问题。当我评论它时,我无法打开管理站点。另一方面,当它可以访问时,url(r'^', include(router.urls)), 日志中出现错误:django_1 | django.core.exceptions.ImproperlyConfigured: "^users\.(?P<format>[a-z0-9]+)/?\.(?P<format>[a-z0-9]+)/?$" is not a valid regular expression: redefinition of group name 'format' as group 2; was group 1 at position 37
  • 你能把有问题的网址包括进来吗?
  • 在我看来,这个问题与我的网址无关,因为当我评论我的所有网址时,我在 urlpatterns 中只有 url(r'^', include(router.urls)), 存在同样的问题。所以它不适用于urlpatterns = format_suffix_patterns(urlpatterns)
猜你喜欢
  • 1970-01-01
  • 2013-07-28
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多