Django - serve() 得到了一个意外的关键字参数“documuent_root”

Posted

技术标签:

【中文标题】Django - serve() 得到了一个意外的关键字参数“documuent_root”【英文标题】:Django - serve() got an unexpected keyword argument 'documuent_root' 【发布时间】:2019-02-03 18:33:17 【问题描述】:

我正在尝试为 DRF 设置媒体文件路径/图像,但它不起作用,我不知道为什么。

我得到这个错误:

serve() got an unexpected keyword argument 'documuent_root'

我在 mac 上运行 django 1.11 DRF w/python 3.6。

我已将设置 url 移动到顶层,原因是link,所以我更近了一步,尽管我仍然无法弄清楚为什么我的链接在单击它们时显示 404。

settings.py

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'src')

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

CORS_ORIGIN_WHITELIST = 'localhost:3000', #whitelists the localhost to run

views.py

from accounts.api.permissions import IsOwnerOrReadOnly
from rest_framework import generics, mixins, permissions, viewsets
from books.models import Books
from books.api.serializers import BooksSerializer


class BookViewSet(viewsets.ModelViewSet):
    permission_classes      = [permissions.IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly]    # authentication_classes  = []
    serializer_class        = BooksSerializer  # necessary

    queryset                = Books.objects.all()
    lookup_field            = 'id'
    search_fields           = ('user__username', 'content', 'user__email')
    ordering_fields         = ('user__username', 'timestamp')

urls.py

from django.conf.urls import url, include
from django.contrib import admin
from . import views
from django.conf.urls.static import static
from django.conf import settings
from rest_framework import routers
from books.api.views import (
                BookViewSet)

router = routers.SimpleRouter()
router.register(r'books', BookViewSet) # --> http://127.0.0.1:8000/api/books/api/books/


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/', include(router.urls)),

  ] + static(settings.MEDIA_URL, documuent_root=settings.MEDIA_ROOT)

【问题讨论】:

【参考方案1】:

实际上是一个错字。您使用的是 documuent_root ,但它应该是 document_root。 所以,改成

urlpatterns = [
    .... other patters,
    ]+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【讨论】:

fml.我没听懂……我的拼写检查也没有。谢谢! 这让我等了 5 分钟。让你覆盖

以上是关于Django - serve() 得到了一个意外的关键字参数“documuent_root”的主要内容,如果未能解决你的问题,请参考以下文章

Django - error_403() 得到了一个意外的关键字参数“异常”

laravel 5.4 php artisan serve 无效请求(意外的 EOF)

Django __init__() 得到了一个意外的关键字参数“用户”

Django - create_superuser() 得到了一个意外的关键字参数“user_type”

Django 错误:save() 得到了一个意外的关键字参数“force_insert”

__init__() 在 python/django 中得到了一个意外的关键字参数“mime”