ページbook_list.htmlの下部プラス「著者を追加」リンクで
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>作者列表</ TITLE> </ HEAD> <BODY> <H1>作者列表</ H1 > <テーブル境界= "1"> <THEAD> <TR> <TH>#</番目> <TH>番号</番目> <TH>名字</番目> <TH>书籍</番目> </ TR > </ THEAD> <TBODY> {author_listの%における作成者%} <TR> <TD> {{forloop.counter}} </ TD> <TD> {{author.id}} </ TD> <TD> {{author.name}} </ TD> <TD> {author.book.all%で書籍の%} {%forloop.last%であれば} {{book.title}} {%他%} {{book.title}} | {%のENDIFの%} {%ENDFOR%} </ TD> </ TR> {%ENDFOR%} </ TBODY> </ TABLE> <a href="/add_author/">添加书籍</a>の </ BODY > </ HTML>
業績:
urls.py内のURLにある「作者の追加」の追加
django.conf.urlsからURLをインポート django.contribインポート管理者から app01インポートビューから urlpatterns = [ #出版社 、URL(R '^ publisher_list /'、views.publisher_list) URL(R '^ add_publisher /'、views.add_publisher )、 URL(R '^ del_publisher /'、views.del_publisher)、 URL(R '^ edit_publisher /'、views.edit_publisher)、 #书籍 URL(R '^ book_list /'、views.book_list)、 URL(R」 ^ add_book /」、views.add_book)、 URL(R '^ del_book /'、views.del_book)、 URL(R '^ edit_book /'、views.edit_book)、 #の作者の URL(R '^ author_list /'、ビュー.author_list)、 URL(R '^ add_author /'、意見。add_author)、 ]
add_author.htmlページを作成するには、著者を追加します。
<!DOCTYPE HTML> <HTML LANG = "EN"> <HEAD> <メタ文字コード= "UTF-8"> <タイトル>添加作者</ TITLE> </ HEAD> <BODY> <H1>添加作者</ H1 > <フォームアクション= "/ add_author /" METHOD = "POST"> <P> 姓名作者:の<input type = "text"の名= "AUTHOR_NAME"> </ P> <P> 书籍: <複数の名前を選択し=」書籍"> {book_list%以下で書籍の%} <オプション値=" {{book.id}} "> {{book.title}} </オプション> {%ENDFOR%} </選択> </ P> <P> の<input type = "提出"値= "提交"> </ P> </ FORM> </ BODY> </ HTML>
最後に著者プラスファンクションviews.pyを追加
HttpResponseと、リダイレクト、からdjango.shortcutsをレンダリングインポート app01インポートモデルから のリスト表示するには#を押す :DEFのpublisher_list(要求を) 渡し #新しいプレス追加するには、 DEFのadd_publisher(要求を): パス #が押して削除 DEFのdel_publisher(要求): パス #編集を押し DEFのedit_publisher(要求): パス #は本のリストを表示 DEFのbook_list(要求を): パス #本を追加 DEF(要求を)add_book: パス #冊削除 :DEF(Request)をdel_book 渡し #編集本を デフedit_book(要求) : パス 著者の#リスト :DEFのauthor_list(要求) すべての著者#クエリを = models.Author.objects.all all_author() ({ "author_list":all_author}、要求、 "author_list.html")レンダリングを返す 添加# DEFのadd_author(要求): request.method IF == "POST"。 #提出されたデータを取得 new_author_name = request.POST.get(「AUTHOR_NAME」) 提出されたデータは、GETLISTと、より多くの値がある場合は# 書籍= request.POST.getlist(「ブック」) #を作成著者 new_author_obj = models.Author.objects .create(名前= new_author_name) #新しい作家や書籍、自動的に提出間の対応を確立する new_author_obj.book.set(書籍) 著者ページのリストに#ジャンプ成功追加するかどうかを確認するために 、戻りリダイレクト(「/ author_list /」)を #照会すべての書籍 all_books =モデル。Book.objects.all() リターンレンダリング(リクエスト、 "add_author.html"、{ "book_list":all_books})
結果:
後に提出さ
データベースで再び見て