将模型作为变量从 URL 获取到 Views django

Get models as variable from URL to Views django

我通过 django REST framework 为我的数据库创建 Api,我从 url.py 获取模型昵称作为变量 var 然后在 views.py 中使用它来确定 哪些型号将与我想要的任何功能一起使用。

所以我制作了模型的字典集合 value,使用 var 作为键并将结果模型放入 data 变量中以根据需要使用模型。

问题:

当我将初始值设置为 data 时,它不会在函数调用中改变,或者我不知道发生了什么,但是当我使用无效的昵称时,它 return 错误我也无法 data 作为 None 值,我尝试了很多类似 getattr 的方法,但都失败了,我认为它可以通过 OOP python 解决,但我对它的了解没有帮助我.

不是: 我使用 django 2.0,数据库 mysql,python 3.6

编辑: 如果我想要类似的方法但是在 pk 上使用它在 data_detail,我尝试这一行 data.objects.get(pk=pk) 但它不起作用

url.py

from .views import data_detail, data_name

urlpatterns = [
    url(r'^(?P<var>[\w-]+)/$', data_list, name='list'),
    url(r'^(?P<var>[\w-]+)/(?P<pk>\d+)/$', data_detail, name='id')
]

views.py

from .models import Authors, Users, Categories

value = {'user': Users,
         'author': Authors,
         'cate': Categories,
        }

data = value['user']

def data_list(request, var):
     global data
     data = value[var]
     return DataList.as_view()(request)

class DataList(ListAPIView):                         
     queryset = data.objects.all()
     AllDataSerializer.Meta.model = data
     serializer_class = AllDataSerializer

def data_detail(request, var, pk):
     global data
     data = value[var]
     data = data.objects.get(pk=pk)
     return DataDetail.as_view()(request)

class DataDetail(ListAPIView):                         
     queryset = data.objects.all()
     AllDataSerializer.Meta.model = data
     serializer_class = AllDataSerializer
from .models import Authors, Users, Categories

value = {'user': Users,
         'author': Authors,
         'cate': Categories,
        }


def data_list(request, var):
     data = value[var]
     return DataList.as_view(**{'model_name':data})(request)

class DataList(ListAPIView): 
     model_name = None

     def get_queryset(self):
         return self.model_name.objects.all()

     def get_serializer_class(self):
         AllDataSerializer.Meta.model = self.model_name
         return AllDataSerializer