如何解决为什么使用axios将带有数据的图像发布到django-rest-framework会出现404错误?
我正在使用django-rest-framework
并发布数据,但是仅当我向其中添加图片时,它才会出现 404错误。没有图像,数据将被发布,modelviewset
会完美运行。
错误屏幕:
我的 urls.py :
router = routers.SimpleRouter()
router.register(r'users',UserView,'user')
router.register(r'teachers',TeacherView,'teacher')
router.register(r'students',StudentView,'student')
router.register(r'classes',ClassView,'class')
router.register(r'subjects',SubjectView,'subject')
router.register(r'institutes',InstituteView,'institute')
router.register(r'enrolls',EnrolledView,'enrolled')
router.register(r'quizes',QuizView,'quizes')
router.register(r'questions',QuestionView,'questions')
router.register(r'options',OptionView,'options')
router.register(r'answers',AnswerView,'answers')
router.register(r'attemptedQuestions',AttemptedQuestionView,'attemmptedQuestion')
router.register(r'attemptedQuizes',AttemptedQuizesView,'attemptedQuizes')
urlpatterns = router.urls
我的views.py:
class QuizView(viewsets.ModelViewSet):
serializer_class = QuizSerializer
queryset = Quiz.objects.all()
class QuestionView(viewsets.ModelViewSet):
serializer_class = QuestionSerializer
queryset = Question.objects.all()
class OptionView(viewsets.ModelViewSet):
serializer_class = OptionSerializer
queryset = Option.objects.all()
class AnswerView(viewsets.ModelViewSet):
serializer_class = AnswerSerializer
queryset = Answer.objects.all()
class AttemptedQuizesView(viewsets.ModelViewSet):
serializer_class = AttemptedQuizesSerializer
queryset = attempted_quizes.objects.all()
class AttemptedQuestionView(viewsets.ModelViewSet):
serializer_class = AttemptedQuestionSerializer
queryset = attempted_question.objects.all()
编辑
堆栈跟踪: Stack Trace after the error screen
测验模型:
class Quiz(models.Model):
Pin = models.AutoField(primary_key=True)
Live = models.BooleanField(default=False)
asset = models.FileField(upload_to='Quiz_assets',default=None,null=True,blank=True)
Title = models.CharField(max_length=255)
Description = models.TextField()
Start_time = models.DateTimeField()
End_time = models.DateTimeField()
created = models.DateTimeField(auto_now_add=True)
Student = models.ManyToManyField(
acModels.Student,through='attempted_quizes')
Subject = models.ForeignKey(
acModels.Subject,related_name="Quiz",on_delete=models.CASCADE)
此外,在我的本地计算机上一切正常。
解决方法
问题不在于您发布图像。您的网址末尾有/ 1。这意味着Django将尝试获取ID = 1的测验。当您使用PUT方法时,Django将尝试更新ID = 1的测验。如果没有此类ID = 1的测验,则会引发404错误。只需从网址中删除/ 1,然后重新发布即可。对于PUT,请附加DB中实际存在的ID。它将起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。