如何解决无法在 DJANGO Rest Framework 的视图和 url 中创建动态变量
我正在尝试创建一个 api,如“http://127.0.0.1:8000/api/data/year”。 但我无法做到,无法在端点中动态化年份。请检查 urls.py 第二个问题 - 我想在 views.py 中将 requestsYear 设为动态。
参考文件如下。请检查。
models.py
class DataModel(models.Model):
city = models.CharField(max_length=100)
date = models.DateField(editable=True)
serializers.py
class DataSerializer(serializers.ModelSerializer):
YearOfDate = serializers.SerializerMethodField()
class Meta:
model = DataModel
fields = ['id','city','date','YearOfDate']
def get_YearOfDate(self,obj):
return obj.date.year
views.py
class DataListView(generics.ListAPIView):
serializer_class = DataSerializer
model = DataModel
queryset = model.objects.all()
def get_queryset(self):
requestedYear = 2009
return DataModel.objects.filter(date__year=requestedYear)
urls.py
urlpatterns = [ path('admin/',admin.site.urls),path('api/data/2009',views.DataListView.as_view()),#re_path(r'^api/match/(?P<year>[0-9]{4})/$',]
解决方法
在您的网址中传递年份
urlpatterns = [ path('admin/',admin.site.urls),path('api/data/<int:year>',views.DataListView.as_view())]
kwargs 现在将在 url 中包含过去的年份
class DataListView(generics.ListAPIView):
queryset = DataModel.objects.all()
serializer_class = DataSerializer
def get(self,request,*args,**kwargs):
year = self.kwargs['year']
return DataModel.objects.filter(date_year=year)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。