将Django应用程序转换为DRF应用程序
我有一个django应用程序还没有上线,我刚收到一个使用API的请求,最后我选择了DRF。但我对它的一些组成部分真的很迷茫。我可以登录,获取令牌并传递令牌以获取一些东西。现在,它将在前端使用angular.as,这需要全部是JSON 虽然我将重写视图,但我希望尽可能多地重用,尤其是模块。例如,我有一个验证来验证表格的注册(它从三个不同的角度使用,因为会员可以通过三种不同的方式注册,并应用一些条件,即自我注册、公司注册和公司代理注册) forms.py清理方法示例:将Django应用程序转换为DRF应用程序,django,Django,我有一个django应用程序还没有上线,我刚收到一个使用API的请求,最后我选择了DRF。但我对它的一些组成部分真的很迷茫。我可以登录,获取令牌并传递令牌以获取一些东西。现在,它将在前端使用angular.as,这需要全部是JSON 虽然我将重写视图,但我希望尽可能多地重用,尤其是模块。例如,我有一个验证来验证表格的注册(它从三个不同的角度使用,因为会员可以通过三种不同的方式注册,并应用一些条件,即自我注册、公司注册和公司代理注册) forms.py清理方法示例: class NewMemb
class NewMemberForm(forms.Form):
firstName=forms.CharField(max_length=25,required=True,widget=forms.TextInput())
def clean(self):
self.cleaned_data=super(NewMemberForm,self).clean()
validate_member_form=validate_member(self.cleaned_data,directregistration=True)
#do we have error messages now?
if len(validate_member_form[0])>0: #yes we have error messages
raise forms.ValidationError(_(validate_member_form[0]),code='invalid')
return validate_member_form[1]
和my views.py:
if request.method=='POST':
err_found=False
go_id=''
form=NewMemberForm(request.POST or None)
if form.is_valid():
#create user
pass
我看到forms.py在drfapiview中是无用的(至少我没有得到一个示例)。如何转换这样一个应用程序而不费吹灰之力呢?问题是——你不能(至少不容易)。DRF程序员已经决定实现
序列化程序
,作为与django表单
完全不同的并行结构。事实上,他们甚至不分享任何故事。当然,您可以使用mixin在表单和序列化程序中共享代码,但是还有一些细微的差别,比如表单
有清除
方法,而序列化程序有验证
方法
下面是一些可以用来最小化代码重复的策略-
事情是这样的——你不能(至少不容易)。DRF程序员已经决定实现
序列化程序
,作为与django表单
完全不同的并行结构。事实上,他们甚至不分享任何故事。当然,您可以使用mixin在表单和序列化程序中共享代码,但是还有一些细微的差别,比如表单
有清除
方法,而序列化程序有验证
方法
下面是一些可以用来最小化代码重复的策略-
谢谢你和她。听起来重写的可能性很大。如果我可以问的话,这将如何成为APIView的一部分。登录需要定义我的活动(请求,关联id):我的活动=关联活动。对象。注释(act_id=F('id')、act_名称=F('ACTION_名称'))。值('act_id'、'act_名称')。过滤器(关联id=asso id)我的活动列出=列表(my_活动)活动=活动。对象。值('id'、'name')。过滤器(active='activities')(活动)回复={'my_activities':my_activities_listed,'activities':activities_listed}data=json.dumps(回复)@NieSelam抱歉你指的是什么“GET”?有什么想法吗@hspandher?谢谢@hspandher。听起来重写的可能性很大。如果我可以问一下,这个GET在APIView中会变成什么样子。登录需要定义我的活动(请求,关联id):我的活动=AssociationActivity.objects.annot
if request.method=='POST':
err_found=False
go_id=''
form=NewMemberForm(request.POST or None)
if form.is_valid():
#create user
pass