0

模型.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

在本地计算机上,它工作正常,但是当部署到亚马逊网络服务时,它给出了这个错误,我无法解决这个错误。请帮助堆栈溢出有什么问题它一直说您的问题主要是代码添加更多细节。

4

0 回答 0