将模型作为变量从 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
我通过 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