我尝试使用本教程与Nginx和Gunicorn一起部署django项目.我做了所有的待办事项但是,当我/etc/nginx/sites-available/myproject使用以下代码创建文件时:
server {
listen 80;
server_name server_domain_or_IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/sammy/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
}
}
Run Code Online (Sandbox Code Playgroud)
然后运行sudo nginx -t查找错误,我收到此错误:
nginx: [emerg] open() "/etc/nginx/proxy_params" failed (2: No such file or directory) in /etc/nginx/sites-enabled/myproject:11
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
有什么问题??以及如何解决?坦
这是我的 FastAPImain.py文件。
from fastapi import FastAPI
from project.config.settings import base as settings
app = FastAPI(docs_url=f"{settings.URL_ROOT}/{settings.DOCS_URL}", redoc_url=None)
app.openapi_version = "3.0.0"
# some functions here
Run Code Online (Sandbox Code Playgroud)
我将这个项目部署到服务器上。但是当我转到服务器中的文档地址时,1.2.3.4/url_root/docs_url它向我显示以下消息:
Unable to render this definition
The provided definition does not specify a valid version field.
Please indicate a valid Swagger or OpenAPI version field.
Supported version fields are swagger: "2.0" and those that match openapi: 3.0.n (for example, openapi: 3.0.0).
Run Code Online (Sandbox Code Playgroud)
有什么问题以及如何解决?
更新:
FastAPI 落后于 Nginx。我的所有端点都工作正常,但我看不到文档。
我在 django 网站中添加了“库尔德”语言。django 不支持这种语言,所以我添加了以下语言:\nin settings.py
\n\ngettext = lambda s: s\nNEW_LANG_INFO = {\n \'ku\': {\n \'bidi\': True,\n \'code\': \'ku\',\n \'name\': \'Kurdish\',\n \'name_local\': u\'\xda\xa9\xd9\x88\xd8\xb1\xd8\xaf\xdb\x8c\',\n },\n}\n\nimport django.conf.locale\nLANG_INFO = dict(**django.conf.locale.LANG_INFO, **NEW_LANG_INFO)\ndjango.conf.locale.LANG_INFO = LANG_INFO\n\nLANGUAGES = (\n (\'en\', \'English\'),\n (\'ku\', gettext(\'Kurdish\')),\n (\'ar\', \'Arabic\')\n)\nRun Code Online (Sandbox Code Playgroud)\n\n现在当我去的时候mysite.com/en/admin/它工作正常。当我去时mysite.com/ar/admin/它工作正常。\n但是当我去时mysite.com/ku/admin/它会引发错误并显示以下消息:\nValueError at /ku/admin/\n invalid token in plural form: EXPRESSION\n
Django 版本是1.11.6.
有什么问题以及如何解决它?
\n\n更新\n我发现在 django.po 中locale/ku/LC_MESSAGES,最后一行注释是"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"
我有一个模型,我想update()为它编写一个方法以进行更新。下面的代码片段是我的模型:
class Klass(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=500)
university = models.CharField(max_length=50,blank=True, null=True)
teacher = models.ForeignKey(Profile, related_name='teacher', on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
和下面的片段是对应的Serializer:
class KlassSerializer(ModelSerializer):
teacher = ProfileSerializer()
url = HyperlinkedIdentityField(view_name='mainp-api:detail', lookup_field='pk')
klass_settings = KlassSettingsSerializer()
class Meta:
model = Klass
fields = ('url', 'id', 'title', 'description', 'university','teacher')
def update(self, instance, validated_data):
instance.title = validated_data.get('title', instance.title)
instance.description = validated_data.get('description', instance.description)
instance.university = validated_data.get('university', instance.university)
instance.save()
return instance
Run Code Online (Sandbox Code Playgroud)
对于更新,我使用以下代码段:
class KlassAPIView(APIView):
def put(self, request, pk=None):
if pk == None:
return Response({'message': 'You …Run Code Online (Sandbox Code Playgroud) python django django-models django-rest-framework django-rest-viewsets
我有以下序列化器:
from rest_framework.serializers import Serializer, ImageField
class MySerializer(Serializer):
avatar = ImageField()
Run Code Online (Sandbox Code Playgroud)
我怎样才能为它编写单元测试?我使用了 Django TestCase,但它引发了一个错误。
from django.test import TestCase
class MySerializerTest(TestCase):
def setUp(self):
self.data = {}
...
def test_image(self):
import tempfile
self.data['avatar'] = tempfile.NamedTemporaryFile(suffix=".jpg").file
r_data = json.dumps(self.data)
j_data = json.loads(r_data)
serializer = MySerializer(data=j_data)
if not serializer.is_valid():
import pprint
pprint.pprint(serializer.errors)
self.assertEqual(serializer.is_valid(), True)
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
TypeError:“BufferedRandom”类型的对象不可 JSON 序列化
我有什么错?如何为图像字段编写测试?