问题描述
我正在使我的代码适应Rest Django API。我正在使用Django Api Rest文档。作为Django Rest API的新手,我在某些方面遇到一些问题和疑问,尤其是关于表单。
-
给出一个CalendarGroupList类,这是一个home.html文件,其中有一个引用URL的按钮(名称= group_newprove1)。如何修改类和form.html的代码以打开form.html页面并使表单正常工作?我已经评论了post函数的最后两个笑声,因为我不知道在其中添加什么。
-
给定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 (将#修改为@)