Django 構(gòu)建模板form表單的兩種方法
通常情況下,我們想構(gòu)建一張表單時(shí)會(huì)在模板文件login.html中寫入
<form action='/your-name/' method='post'> <label for='your_name'>Your name: </label> <input type='text' name='your_name' value='{{ current_name }}'> <input type='submit' value='OK'></form>
下面說說我們?cè)谑褂胐jango是如何在模板文件中生成form表單:
1、自定義顯示的字段:
假如我們要在模板中生成一張含有username和content的表單
在app下新建forms.py(/users/forms.py)
from django import formsclass MessageGetForm(forms.Form): username = forms.CharField(label=’用戶’, max_length=5) #max_length 瀏覽器限制用戶輸入的字符串長(zhǎng)度 content = forms.CharField(label=’留言’, max_length=100)
在視圖文件中引用上邊表單字段并傳遞給模板(users/view.py)
from apps.users.forms import MessageGetFormclass MessageView(View): def get(self, request, *args, **kwargs): message = MessageGetForm() return render(request, 'message.html', {'message': message})
在模板文件調(diào)用(message.html)
<form action='' method='get'> {{ message }}</form>
渲染后的頁面效果
2、將數(shù)據(jù)表的字段映射到模板文件form表單
數(shù)據(jù)表courses_lesson字段如下
在app下新建forms.py(/users/forms.py)
#此處我們假設(shè)你的項(xiàng)目文件courses/models.py內(nèi)含有Lesson類from apps.courses.models import Lessonfrom django.forms import ModelFormclass CoursesLessonForm(ModelForm): class Meta: model = Lesson fields = [’add_time’, ’name’, ’learn_times’] #要顯示的字段
在視圖文件中引用上邊表單字段并傳遞給模板(users/view.py)
from apps.users.forms import CoursesLessonFormclass MessageView(View): def get(self, request, *args, **kwargs): message = CoursesLessonForm() return render(request, 'message.html', {'message': message})
在模板文件調(diào)用(message.html)
<form action='' method='get'> {{ message }}</form>
頁面效果圖:
所有表單類都作為 django.forms.Form 或者 django.forms.ModelForm 的子類來創(chuàng)建。您可以把 ModelForm 想象成 Form 的子類。實(shí)際上 Form 和 ModelForm 從(私有) BaseForm 類繼承了通用功能,但是這個(gè)實(shí)現(xiàn)細(xì)節(jié)不怎么重要。
到此這篇關(guān)于Django 構(gòu)建模板form表單的兩種方法的文章就介紹到這了,更多相關(guān)Django 構(gòu)建模板form表單的兩種方法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. XML入門的常見問題(三)2. XML基本概念XPath、XSLT與XQuery函數(shù)介紹3. WML的簡(jiǎn)單例子及編輯、測(cè)試方法第1/2頁4. el-input無法輸入的問題和表單驗(yàn)證失敗問題解決5. 關(guān)于html嵌入xml數(shù)據(jù)島如何穿過樹形結(jié)構(gòu)關(guān)系的問題6. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)7. 不要在HTML中濫用div8. vue實(shí)現(xiàn)復(fù)制文字復(fù)制圖片實(shí)例詳解9. XML入門的常見問題(四)10. 前端html+css實(shí)現(xiàn)動(dòng)態(tài)生日快樂代碼
