模型.py
from django.conf import settings
from django.db import models
from subject.models import Subject
from core.utils import generate_file_name
def file_upload_path(instance, filename):
# File will be uploaded to MEDIA_ROOT / user_<id>/<filename>
name = instance.slug + ".zip"
file_path = generate_file_name()
return 'project_{0}/{1}/{2}'.format(file_path, instance.slug, name)
def image_upload_path(instance, filename):
# File will be uploaded to MEDIA_ROOT / user_<id>/<filename>
if instance.project_image1 == filename:
filename = "image_1.png"
elif instance.project_image2 == filename:
filename = "image_2.png"
elif instance.project_image3 == filename:
filename = "image_3.png"
return 'project_{0}/{1}'.format(instance.slug, filename)
class Project(models.Model):
"""This is model for project"""
project_name = models.CharField(max_length=50,)
description = models.TextField()
slug = models.SlugField()
technologies = models.TextField()
owner = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
price = models.DecimalField(max_digits=99, decimal_places=2)
subject = models.ManyToManyField(
Subject, related_name="projects")
created = models.DateField(auto_now_add=True)
project_image1 = models.ImageField(upload_to=image_upload_path)
project_image2 = models.ImageField(
blank=True, null=True, upload_to=image_upload_path)
project_image3 = models.ImageField(
blank=True, null=True, upload_to=image_upload_path)
project_zip = models.FileField(upload_to=file_upload_path)
def search_by_id(self, id):
return self.objects.get(id=id)
def search_by_slug(self, slug):
return self.objects.get(slug=slug)
视图.py
from rest_framework import viewsets, generics
from rest_framework.parsers import FormParser, MultiPartParser, FileUploadParser
from .models import Project
from .serializers import ProjectSerializer, ProjectListSerializer
from .permissions import IsOwnerOrReadOnly
class ProjectCreateView(generics.CreateAPIView):
parser_classes = (MultiPartParser, FormParser,)
serializer_class = ProjectSerializer
permission_classes = [IsOwnerOrReadOnly, ]
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class ProjectListView(generics.ListAPIView):
parser_classes = (FileUploadParser,)
serializer_class = ProjectListSerializer
queryset = Project.objects.all()
class ProjectRetrieveView(generics.RetrieveAPIView):
parser_classes = (FileUploadParser,)
serializer_class = ProjectListSerializer
queryset = Project.objects.all()
lookup_field = "slug"
在本地计算机上,行格式.models import Project
工作正常但是我在aws上部署乳清然后它给出了错误。
Request Method: GET
Request URL: http://www.compute.amazonaws.com/api/user/login
Django Version: 3.1.1
Exception Type: ImportError
Exception Value:
cannot import name 'Project' from 'project.models' (/home/ubuntu/project/vtu-project-backend-django/api/project/models.py)
Exception Location: /home/ubuntu/project/vtu-project-backend-django/api/project/views.py, line 4, in <module>
Python Executable: /home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/bin/python
Python Version: 3.8.5
Python Path:
['/home/ubuntu/project/vtu-project-backend-django/api',
'/home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/bin',
'/usr/lib/python38.zip',
'/usr/lib/python3.8',
'/usr/lib/python3.8/lib-dynload',
'/home/ubuntu/.local/share/virtualenvs/vtu-project-backend-django-_DtFEd4z/lib/python3.8/site-packages']
Server time: Mon, 07 Sep 2020 13:00:24 +0000
在本地计算机上,它工作正常,但是当部署到亚马逊网络服务时,它给出了这个错误,我无法解决这个错误。请帮助堆栈溢出有什么问题它一直说您的问题主要是代码添加更多细节。