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

问题描述

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

  1. 给出一个CalendarGroupList类,这是一个home.html文件,其中有一个引用URL的按钮(名称= group_newprove1)。如何修改类和form.html的代码以打开form.html页面并使表单正常工作?我已经评论了post函数的最后两个笑声,因为我不知道在其中添加什么。

  2. 给定CalendarsOfGroupList类,我应该采用与第1点相同的形式优先级,但是在这种情况下,“ group”是CalendarGroups id的外键。我该如何撰写帖子?

在urls.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/',name='caledar_newprova1'),#NUOVO CALENDARIO

在home.html中:

<a class="btn btn-primary btn-lg active mt-5 mb-5" href="{% url 'cal:group_newprova1' %}">Aggiungi edifico</a>

在views.py中:

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,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,pk,format=None):
        calendar = self.get_object(pk)
        print (calendar)
        serializer = CalendarSerializer(calendar)
        #return Response(serializer.data)
        return Response({'object_list': calendar})

在form.hmtl中:

<form action="{% url '' %}" method="POST">
    {% csrf_token %}
    {% render_form serializer %}
    <input type="submit" value="Save">
</form>

在models.py中:

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',self.group))
        return f'<a href="{url}"> {self.name} </a>'

在serializer.py中:

class CalendarGroupsSerializer(serializers.ModelSerializer):
    class Meta:
        model = CalendarGroups
        fields = ['id','name']

class CalendarSerializer(serializers.ModelSerializer):
    class Meta:
        model = Calendar
        fields = ['id','name','group']

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...