您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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,渲染到頁面是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)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。