3

不知道我设置错了什么,但在 uvicorn 中运行时我没有得到 graphiql 界面uvicorn mysite.asgi:application

[32mINFO[0m:     Started server process [[36m14872[0m]
[32mINFO[0m:     Waiting for application startup.
[32mINFO[0m:     ASGI 'lifespan' protocol appears unsupported.
[32mINFO[0m:     Application startup complete.
[32mINFO[0m:     Uvicorn running on [1mhttp://127.0.0.1:8000[0m (Press CTRL+C to quit)
[32mINFO[0m:     127.0.0.1:52463 - "GET /graphql/ HTTP/1.1" 200
Not Found: /static/graphene_django/graphiql.js
[33mWARNING[0m:  Not Found: /static/graphene_django/graphiql.js
[32mINFO[0m:     127.0.0.1:52463 - "GET /static/graphene_django/graphiql.js HTTP/1.1" 404
Not Found: /static/graphene_django/graphiql.js
[33mWARNING[0m:  Not Found: /static/graphene_django/graphiql.js
[32mINFO[0m:     127.0.0.1:52463 - "GET /static/graphene_django/graphiql.js HTTP/1.1" 404

但是当我这样做时它加载得很好python manage.py runserver

这是我安装的:

Python 3.8.2
Django==3.0.5
uvicorn==0.11.3
graphene==2.1.8
graphene-django==2.9.0
graphql-core==2.3.1

在 settings.py 我有:

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

# Graphene
GRAPHENE = {
    'SCHEMA': 'mysite.schema.schema'
}
4

2 回答 2

0

只需在 settings.py 文件中设置 DEBUG = True 即可。

于 2021-09-01T09:07:32.533 回答
0

Django 本身并不在开发服务器之外提供静态文件,您必须以某种方式自己完成。您可以设置像 nginx 这样的反向代理并指示它为您staticfiles目录中的所有静态文件提供服务,或者,仅用于开发,您可以指示 django 为它们提供服务,方法是添加urls.py

from django.conf import settings
from django.views.static import serve

# Put the line provided below into your `urlpatterns` list.
url(r'^(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT})

确保仅将后一种方法用于开发,因为它可能会对性能产生严重影响。

对于这两种方法,您还必须使用python manage.py collectstatic.django 收集静态文件,因为在开发服务器之外,需要将所有静态文件收集在一个地方,即您的STATIC_ROOT.

于 2021-02-13T12:47:18.037 回答