這篇文章主要為大家展示了“django中form表單組建使用及CBV模式的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“django中form表單組建使用及CBV模式的示例分析”這篇文章吧。
一、FBV和CBV FBV:是視圖函數(shù)以函數(shù)的方式寫邏輯代碼 CBV:是視圖以類的方式寫邏輯代碼 如CBV: views.py from django.shortcuts import render,HttpResponse,redirect from django.views import View from django.views.decorators.csrf import csrf_exempt,csrf_protect from django.utils.decorators import method_decorator from app01 import models class LoginView(View): @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super(LoginView, self).dispatch(request,*args,**kwargs) def get(self, request, *args, **kwargs): return render(request, 'login.html') def post(self,request, *args, **kwargs): user = request.POST.get('user') pwd = request.POST.get('pwd') obj = models.UserInfo.objects.filter(username=user,password=pwd).first() if obj: request.session['user_info'] = {'id': obj.id, 'username': obj.username} return redirect('/users.html') return render(request, 'login.html', {'msg': '去你的'}) 如FBV: views.py def register(request): if request.method == "GET": form = RegisterForm() return render(request, 'register.html', {'form': form}) else: response = {'status': True, 'data': None, 'msg': None} form = RegisterForm(request.POST) if form.is_valid(): print(form.cleaned_data) else: response['status'] = False response['msg'] = form.errors return HttpResponse(json.dumps(response)) 二、form表單組建使用 導(dǎo)入forms模塊 from django.forms import Form from django.forms import fields from django.forms import widgets #創(chuàng)建表單類 class UserForm(Form): username = fields.CharField( required=True, error_messages={'required': '用戶名不能為空'}, widget = widgets.TextInput(attrs={'class': 'form-control'}) ) password = fields.CharField( required=True, error_messages={'required': '郵箱不能為空', 'invalid': '郵箱格式錯(cuò)誤'}, widget = widgets.TextInput(attrs={'class': 'form-control'}) ) ut_id = fields.ChoiceField( choices = [], widget = widgets.Select(attrs={'class': 'form-control'}) ) role_id = fields.MultipleChoiceField( choices=[], widget=widgets.SelectMultiple(attrs={'class': 'form-control'}) ) def __init__(self, *args, **kwargs): super(UserForm,self).__init__(*args,**kwargs) self.fields['ut_id'].choices = models.UserType.objects.values_list('id','title') self.fields['role_id'].choices = models.Role.objects.values_list('id','caption') 注: username, password,渲染到頁(yè)面是input標(biāo)簽屬性的name值 fields.CharField表示輸入文本類型, fields.ChoiceField表示單選下拉框 fields.MultipleChoiceField表示多選下拉框 required=True表示必填選項(xiàng) error_messages={'required': '用戶名不能為空'}表示錯(cuò)誤提示 widget = widgets.TextInput(attrs={'class': 'form-control'})表示增加class屬性
以上是“django中form表單組建使用及CBV模式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。