免責事項:このブログはpycharm Django2.2であり、この内容に基づいて、簡単に説明します
- 条件を変更して再検索に追加および削除の形で渡したパラメータのデータベース(完全な小さなプロジェクト)
- 位置ルーティングパラメータは、キーワードパラメータ、並びにHTML解析逆経路
- 転送要求の形
- htmlページの区切りと継承
まず、3つの伝送パラメータは、メソッドのルーティング、及び分析用逆経路
1.1位置パラメータ:
re_path(R ' gettime /(\ D +)/(\ D +)/(\ D +)/ '、views.get_time)
GET_TIME DEF(リクエスト、時、分、秒):
#通常の質量参加
#リターンのHttpResponse( "時間- >%D:%D:%D" %(時、分、秒、))
#正規表現の質量参加
リターンHttpResponse( "時間- >%sの :%sの:%s"は%(時、分、秒))
いわゆる位置パラメータ:書き込み位置がエラーを関連するパラメータを変更し、機能のパラメータ渡しのパラメータを変更することはできません
1.2キーワードのパラメータ:
#キーワードパラメータ日付渡し(URL順に指定し、ソート機能が---- P(大文字)---「短いパラメータ受け付けません) re_path(R&LT " のgetData /(P <年> \ + Dを)/( P <月> \ + D)/(P <日> \ + D)/ " 、views.get_data) DEF get_Data(要求、日、月、年): 返すのHttpResponse(" %sの:データ%sのを渡すランダムパラメータ: S%"%(年、月、日))
キーワード引数は、我々は、受信を書くときに位置パラメータのルーティング決定は、出力パラメータには影響しないことがわかります
1.3逆引きルーティング(後の推奨言葉遣い)
#(プラスincude名前空間属性に)書かれたルーティングを パス(R&LT ' App2の/ '、((含む' App2.urls '、' App2の')、ネームスペース= ' SECOND ' ))、 #のサブ書き込まバック経路(経路プラスname属性) #HTML構文解析、ルーティングリバース (R&LTパスを' /学習'、views.learn、名前= " 学び" )、 #のページ参照がルート文言解決され 、<H3>クラスのリストを、</ H3>]をクリックし 、{%のためにグレードで grade_list%} <LI> <A HREF = "{%URL '第二:getstudent' g_id = grade.id%}"> {{}} grade.g_name </a>の</ LI> {%ENDFOR%} <a href="">する</a>
第二に、改ページと継承:
なぜ、ページを分割する:あなたは、Webページを記述する場合は、トップナビゲーションバーは複数のページを持っている中で、例えば、ページ間、この時間は、私たちは繰り返し書き込みの面倒な作業を保存、書き込みに継承を使用することができます
#基本ページはそう書かれた、レイアウト
{%ブロックヘッダ%} {%エンドブロック%} {%ブロック検索%} {%エンドブロック%} {%ブロックコンテンツ%} {%エンドブロック%} {%ブロックフッタ%} {末端ブロック%}%の
#の継承(漢の身体を書いていません)
延び%{ "base.html" %}
{%}%ブロックヘッダ
<H1の> ---これは、最初の元の親クラスであります!ヘッダ</ H1の>
{%の末端ブロック%}
2。
%}コンテンツ%をブロック
</ H1の> <H1の>継承表示内容
{%エンドブロック%}
#両方のディスプレイ
{%}%ブロックヘッダ
{{ブロック。スーパー }}
<のH1> 継承ファイルを上書きヘッダ</ H1 >
{%}%の末端ブロック
第三に、例が実証:ジャンプリストのURL質量参加のデータベースを、
質問があるので、それは、実際には----------------有用性は、あなたがリストと詳細ページのリストを作ることができます(まず抗クロール基本的な行うことができます大幅に低下するものを使用することです)---------自身のコードに
#データベース・インスタンス・パラメータ通過 経路(R&LT ' グレード/ '、views.grades、NAME = ' getgrade ' )、 パス(R&LT ' 学生/。<整数:g_ID> / '、views.students、NAME = ' getstudent ' )、 #パス(r'gettime / <INT:時間> / <INT:分> / <INT:SECOND> /」、views.get_time)、 #前に生徒へ のパス(R&LT ' student_detil / <INT:ID> / '、ビュー.student_detil、名前= ' studentdetil ' )、 #を削除学生 パス(R "delete_student / <INT:S_ID> / "、views.delete_student、名前= ' deletestudemt ')、
#显示学生详情 デフstudent_detil(リクエスト、ID): 学生 = Student.objects.get(PK = ID) #の名前= student.s_nameの #1 グレード= student.s_grade_id #stu_id = Student.objects.filter(s_grade_id = s_grade_id) リターン(リクエスト、レンダリング' student_delit.html '、コンテキスト= { " 学生" :学生、}) #删除学生 DEF delete_student(リクエスト、S_ID): 学生 = Student.objects.get(PK = S_ID) student.delete() リターン HttpResponse(" 学生"+ student.s_name + " 删除成功!" ) デフdo_create_student(リクエスト): プリント(request.method) SNAME = request.POST.get(' SNAME ' ) grade_id = request.POST.get(' 選択' ) プリント(grade_id) 学生 = 学生() student.s_name = SNAME student.s_grade_id = grade_id student.save() の戻りはHttpResponse(SNAME + " ---> 170 " + grade_id + 」班学生「 + 」正常に追加」)
<H3>班级列表、点击查看</ H3> {%用グレードで grade_list%} <LI> <a href= "{% URL'second:getstudent' g_id=grade.id %}"> {{grade.g_name }} </a>の</ LI> {%ENDFOR%} <a href= ""> </a>の <H3> 170 {{g_id}}班的学生列表如下</ H3> <UL> {%以下のための学生で students_list%} > <LI> <a href= "{% URL'second:studentdetil' id=student.pk %}" {{学生。s_name}} </a>の</ LI> {%ENDFOR%} </ UL> <時間> <H2>添加学生信息</ H2> <フォームアクション= " {%URL '第二:do_create_student' %} "メソッド= " ポスト" > 姓名:の<input type = " テキスト"の名前= " SNAME " > 所在班级: <名前=選択" を選択" > <オプション値= " 1 " > 1701班</オプション> <オプション値= " 2 " >1702班</オプション> <オプション値= " 3" > 1703禁止</オプション> <オプション値= " 4 " > 1704禁止</オプション> <オプション値= " 5 " > 1705禁止</オプション> <オプション値= " 6 " > 1706禁止</オプション> </ SELECT> <INPUTタイプの= " 送信"値= " OK学生を追加する" > </ FORM> <HR> <ボタン> <a href= "{% url'second:getgrade' %}"> クラスリストに戻ります</a>の</ボタン> <H1の学生>の</ H1>の <LI>名前{{student.s_name}} </李 > クラス<LI>ここで、170 student.s_grade_id {{}} </ LI> <ボタン> <a href= "{%'second:deletestudemt' s_id=student.pk %} URL"> </ A学生を削除> </ button>の
ファイル名を指定して実行ショット
第四に、次のセッションログイン登録の更新だけでなく、会話の基本的な種類を説明するためには、好きなのを願っています!!!