django - 无法在 DJANGO Rest Framework 的视图和 url 中创建动态变量
问题描述
我正在尝试创建一个类似“http://127.0.0.1:8000/api/data/year”的 api。但我做不到,无法在端点中动态显示年份。请检查 urls.py 的第二个问题 - 我想让 requestsYear 在views.py 中动态化。
参考文件如下所述。请检查。
模型.py
class DataModel(models.Model):
city = models.CharField(max_length=100)
date = models.DateField(editable=True)
序列化程序.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
视图.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)
网址.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})/$', views.DataListView.as_view()),]
解决方案
在您的网址中度过这一年
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)
推荐阅读
- reactjs - 提交时 React-select defaultValue 未定义
- python - 如何用 selenium 和 python 填充 javascript 文本框(没有 send_keys)
- sas - 使用直通执行 SAS 代码时出错
- c# - 解析枚举的完全限定字符串表示,包括命名空间/类型
- javascript - 将自定义声明与 Firestore 通配符匹配时出现 onSnapshot 权限错误
- r - Unnest Google Analytics 嵌套数据 DPLYR
- microsoft-graph-api - Graph API 错误将重复从“noEnd”更改为“numbered”
- c - 与子线程共享存储在主线程堆栈中的互斥锁
- spring-boot - Spring boot 2.2.x 应用程序是否可部署到 Servlet 3.0 容器
- python - 这段代码如何只打印出字符串的首字母?