Django rest framework 如何使用django api rest在django中创建表单页面

Django rest framework 如何使用django api rest在django中创建表单页面,django-rest-framework,django-forms,django-views,django-urls,django-serializer,Django Rest Framework,Django Forms,Django Views,Django Urls,Django Serializer,我正在使我的代码适应其余的Django API。我正在使用Django Api Rest文档。作为Django Rest API的新手,我在某些方面遇到了一些问题和疑问:尤其是表单方面 给定CalendarGroupList类,一个home.html文件,其中有一个指向url的按钮(name=group_newprove1)。如何修改类和form.html的代码以打开form.html页面并使表单工作?我已经评论了post函数的最后两个笑话,因为我不知道该放什么进去 给定一个Calendars

我正在使我的代码适应其余的Django API。我正在使用Django Api Rest文档。作为Django Rest API的新手,我在某些方面遇到了一些问题和疑问:尤其是表单方面

  • 给定CalendarGroupList类,一个home.html文件,其中有一个指向url的按钮(name=group_newprove1)。如何修改类和form.html的代码以打开form.html页面并使表单工作?我已经评论了post函数的最后两个笑话,因为我不知道该放什么进去

  • 给定一个CalendarsOfGroupList类,我应该执行与第1点相同的表单优先级,但在本例中,“group”是CalendarGroups id的外部键。我如何制定帖子

  • 在URL.py中:

    path('homeProva1/', views.CalendarGroupList.as_view()), #LISTA EDIFICI OK
    path('homeProva1/<int:pk>/calendars/', views.CalendarsOfGroupList.as_view()), #LISTA CALENDARI DI QUEL PK EDIFICIO OK
    path('homeProva1/<int:pk>/calendars/<int:pk1>/events/', views.EventsOfCalendarList.as_view()), #LISTA EVENTI DI QUEL PK CALENDARIO OK
    path('homeProva1/group/new/', views.CalendarGroupList.as_view(), name='group_newprova1'), #NUOVO GRUPPO
    path('homeProva1/group/<int:pk>/calendar/', views.CalendarGroupList.as_view(), name='caledar_newprova1'), #NUOVO CALENDARIO
    
    在form.hmtl中:

    <form action="{% url '' %}" method="POST">
        {% csrf_token %}
        {% render_form serializer %}
        <input type="submit" value="Save">
    </form>
    
    class CalendarGroupList(APIView):
        renderer_classes = [TemplateHTMLRenderer]
        template_name = 'cal/home.html'
        """
        List all calendargroups, or create a new calendargroup.
        """
        def get(self, request, format=None):
    
            calendargroups = CalendarGroups.objects.all()
            serializer = CalendarGroupsSerializer(calendargroups, many=True)
            #return Response(serializer.data)
            return Response({'object_list': calendargroups})
    
        def post(self, request, format=None):
            serializer = CalendarGroupsSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                #return Response(serializer.data, status=status.HTTP_201_CREATED)
            #return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    class CalendarsOfGroupList(APIView):
        renderer_classes = [TemplateHTMLRenderer]
        template_name = 'cal/calendarOfGroup.html'
        """
        List all calendarOfGroups, or create a new calendarOfGroup.
        """
        def get_object(self, pk):
            try:
                return Calendar.objects.filter(group=pk)
            except Calendar.DoesNotExist:
                raise Http404
    
        def get(self, request, pk, format=None):
            calendar = self.get_object(pk)
            print (calendar)
            serializer = CalendarSerializer(calendar)
            #return Response(serializer.data)
            return Response({'object_list': calendar})
    
    <form action="{% url '' %}" method="POST">
        {% csrf_token %}
        {% render_form serializer %}
        <input type="submit" value="Save">
    </form>
    
    class CalendarGroups(models.Model):
      
        name = models.CharField(max_length = 155, blank=True, null=True, unique=True)
    
        def __str__(self):
            #self.name = name
            return str(self.name)
        
        @property
        def get_html_url(self):
            url = reverse('', args=(self.id,))
            return f'<a href="{url}"> {self.name} </a>'
       
    
    class Calendar(models.Model):
        name = models.CharField(max_length=200, unique=True)
        #created_by
        group = models.ForeignKey(CalendarGroups, on_delete = models.CASCADE, default='')
     
        @property
        def get_html_url(self):
            url = reverse('cal:calendar_view', args=(self.id, self.group))
            return f'<a href="{url}"> {self.name} </a>'
    
    class CalendarGroupsSerializer(serializers.ModelSerializer):
        class Meta:
            model = CalendarGroups
            fields = ['id', 'name']
    
    class CalendarSerializer(serializers.ModelSerializer):
        class Meta:
            model = Calendar
            fields = ['id', 'name', 'group']