REG2機能:
django.shortcutsからのHttpResponse、レンダリングインポート app01輸入モデルから :REG2(要求を)DEF form_obj = RegForm()#GET请求 request.method場合== "POST": form_obj = RegForm(request.POST) form_obj.is_valid場合() : パスの リターン(要求、 "reg2.html"、{:form_obj "form_objを"})レンダリング
フォームのスタイル、HTTPSブートストラップ上を探す://v3.bootcss.com/css/#formsを
フォーム・グループのスタイルを使用してタグラベルで
reg2.html:
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>注册页面</ TITLE> <リンクのrel = "スタイルシート"のhref = "/静的/ストラップ/ / bootstrap.min.css CSS "> </ head> <body> <DIV CLASS ="コンテナ"> <フォームアクション=" / REG2 / "METHOD = "POST" NOVALIDATE> {%csrf_token%} <DIV CLASS ="フォームグループ"> {{form_obj.username.label}} 、{{form_obj.username}} <スパン> {{form_obj.username.errors.0}} </スパン> </ div> <DIV CLASS ="フォームグループ"> {{form_obj.password.label}} 、{{}} form_obj.password <スパン> {{form_obj.password.errors.0}} </スパン> </ div> <P>の<input type = "送信"> </ P> </フォーム> </ div> </ body> </ HTML>
フォームコントロールのスタイルを持つinputタグで
このスタイルの形で使用Views.pyタイプは、ウィジェットを追加します
Djangoのインポートフォームから django.formsからインポートウィジェット クラスRegForm(forms.Form): ユーザ名= forms.CharField( MIN_LENGTH = 5、 ラベル= "用户名"、 error_messages = { "MIN_LENGTH":「用户名不能少于5位! " }、 ウィジェット= widgets.TextInput(ATTRS = { "クラス": "フォームコントロール"}) ) パスワード= forms.CharField( MIN_LENGTH = 6、 ラベル= "密码"、 error_messagesは= { "MIN_LENGTH":"密码不能少于6位「、! }、 ウィジェット= widgets.PasswordInput(ATTRS = { "クラス": "フォームコントロール"}、render_value =真) )
BTNのBTN-デフォルトスタイルのボタンを使用して
index.htmlのように直接追加
<!DOCTYPE HTML> <!DOCTYPE HTML> <HTML LANG = "EN"> <HTML LANG = "EN"> <HEAD> <HEAD> <メタ文字コード= "UTF-8"> <メタ文字コード= "UTF-8"> <タイトル>注册页面</ TITLE> <タイトル>注册页面</ TITLE> <リンクのrel = "スタイルシート"のhref = "/静的/ストラップ/ / bootstrap.min.css CSS "> <リンクのrel = "スタイルシート"のhref = "/静的/ストラップ/ / bootstrap.min.css CSS "> </ head> </ head> <body> <body> <DIV CLASS ="コンテナ"> <フォームアクション=" / REG2 / "METHOD = "POST" NOVALIDATE> {%csrf_token%} <DIV CLASS ="フォームグループ"> {{form_obj.username.label}} 、{{form_obj.username}} <スパン> {{form_obj.username.errors.0}} </スパン> </ div> <DIV CLASS ="フォームグループ"> {{form_obj.password.label}} 、{{}} form_obj.password <DIV CLASS ="コンテナ"> <フォームアクション=" / REG2 / "METHOD = "POST" NOVALIDATE> {%csrf_token%} <DIV CLASS ="フォームグループ"> {{form_obj.username.label}} 、{{form_obj.username}} <スパン> {{form_obj.username.errors.0}} </スパン> </ div> <DIV CLASS ="フォームグループ"> {{form_obj.password.label}} <スパン> {{form_obj.password.errors.0}} </スパン> </ div> <P>の<input type = "提出"クラス= "BTN BTN-デフォルト"> </ P> </ FORM> </ div> </ BODY> </ HTML>
結果:
入力が長すぎるとき、それは中間にレイアウト
index.htmlを:
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>注册页面</ TITLE> <リンクのrel = "スタイルシート"のhref = "/静的/ストラップ/ CSS / bootstrap.min.css "> </ head> <body> <DIV CLASS ="コンテナ"> <DIV CLASS ="行"> <DIV CLASS =" COL-MD-6 COL-MD-オフセット-3" > <FORM ACTION = "/ REG2 /" METHOD = "POST" NOVALIDATE> {%csrf_token%} <DIVクラスは= "フォームグループ"> {{form_obj.username.label}} 、{{form_obj。ユーザ名}} <スパン> {{form_obj.username.errors.0}} </スパン> </ div> <DIV CLASS = "フォームグループ"> {{form_obj.password.label}} 、{{form_obj.password}} <スパン> {{form_obj.password.errors.0}} </スパン> </ div> <P >の<input type = "提出"クラス= "BTN BTN-デフォルト"> </ P> </ FORM> </ div> </ div> </ div> </ BODY> </ HTML>
3つのコピーは、中央が6を占め、残りの3つの部分の右側を空のままに
結果:
タイピング、クリックして「送信」
ヘルプ・ブロックのスタイルを使用することができますエラー
reg2.html:
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>注册页面</ TITLE> <リンクのrel = "スタイルシート"のhref = "/静的/ストラップ/ CSS / bootstrap.min.css "> </ head> <body> <DIV CLASS ="コンテナ"> <DIV CLASS ="行"> <DIV CLASS =" COL-MD-6 COL-MD-オフセット-3" > <フォームアクション= "/ REG2 /"方法は= "POST" NOVALIDATE> {%csrf_token%} <DIVクラスは= "フォーム基{%form_obj.username.errors.0場合%} has_error {%ENDIF%}"> {{form_obj.username。 </ div>ラベル}} 、{{}} form_obj.username <スパンクラス= "ヘルプブロック"> {{form_obj.username.errors.0}} </ span>を <DIV CLASS = "フォーム基{%form_obj.password.errors.0%があれば} {%ENDIF%}エラーを有する"> {{form_obj.password.label}} 、{{form_obj.password}} <スパンクラス= "ヘルプブロック"> {{form_obj.password.errors.0}} </スパン> </ div> <P> <INPUT TYPE = "提出"クラス= "BTN BTNデフォルト"> </ P> </フォーム> </ div> </ div> </ div> </ BODY> </ HTML>
結果: