Django图书管理系统

创建一个项目

  1. 1. django-admin startproject 图书管理
  2. 2. cmd 命令终端下创建一个app
  3. python manage.py startapp app01

配置settings.py文件(此处填写了后续需要配置的所有内容)

  1. 1、注释该行内容(大约在47~57行)
  2. # 'django.middleware.csrf.CsrfViewMiddleware',
  3. 2、连接数据库的配置(注释掉原来的 DATABASES
  4. DATABASES = {
  5. 'default': {
  6. 'ENGINE': 'django.db.backends.mysql',
  7. 'NAME': "book_m_s",
  8. 'HOST': "127.0.0.1",
  9. 'PORT': 3306,
  10. 'USER': 'root',
  11. 'PASSWORD': '',
  12. }
  13. }
  14. 3、静态文件的配置
  15. STATIC_URL = '/static/'
  16. STATICFILES_DIRS = [
  17. os.path.join(BASE_DIR, "static")
  18. ]
  19. 4app添加
  20. INSTALLED_APPS = [
  21. 'django.contrib.admin',
  22. 'django.contrib.auth',
  23. 'django.contrib.contenttypes',
  24. 'django.contrib.sessions',
  25. 'django.contrib.messages',
  26. 'django.contrib.staticfiles',
  27. 'app01.apps.App01Config',
  28. ]

__init__.py文件,引入pymysql模块,使用mysql数据库

  1. import pymysql
  2. pymysql.install_as_MySQLdb()

app01/modles.py文件,创建数据表

  1. from django.db import models
  2. # Create your models here.
  3. # 出版社表
  4. class Publisher(models.Model):
  5. # 自增的ID主键
  6. id = models.AutoField(primary_key=True)
  7. # 创建一个varchar(64)的唯一的不为空的字段,且不能为空,且不重复
  8. name = models.CharField(max_length=64, null=False, unique=True)
  9.  
  10. # 书籍表
  11. class Book(models.Model):
  12. # 自增的ID主键
  13. id = models.AutoField(primary_key=True)
  14. # 创建一个varchar(64)的唯一的不为空的字段,且不能为空,且不重复
  15. title = models.CharField(max_length=64, null=False, unique=True)
  16. # 告诉ORM我这张表和Publisher表是关联关系,ORM自动帮我创建关联ID (publisher_id)字段
  17. publisher = models.ForeignKey(to="Publisher")
  18.  
  19. # 作者表
  20. class Author(models.Model):
  21. # 自增的ID主键
  22. id = models.AutoField(primary_key=True)
  23. # 创建一个varchar(64)的唯一的不为空的字段,且不能为空,且不重复
  24. name = models.CharField(max_length=16, null=False, unique=True)
  25. # 告诉ORM 我这张表和book表是多对多的关联关系,ORM自动帮我生成了第三张表
  26. book = models.ManyToManyField(to="Book")

urls.py文件,配置路由

  1. from django.conf.urls import url
  2. from django.contrib import admin
  3. from app01 import views
  4.  
  5. urlpatterns = [
  6. url(r'^admin/', admin.site.urls),
  7. # 出版社相关的对应关系
  8. # 出版社列表
  9. url(r'^publisher_list/', views.publisher_list),
  10. # 添加出版社
  11. url(r'^add_publisher/', views.add_publisher),
  12. # 删除出版社
  13. url(r'^delete_publisher/', views.delete_publisher),
  14. # 编辑出版社
  15. url(r'^edit_publisher/', views.edit_publisher),
  16.  
  17. # 书籍相关的对应关系
  18. # 书籍列表
  19. url(r'^book_list/', views.book_list),
  20. # 添加书籍
  21. url(r'^add_book/', views.add_book),
  22. # 删除书籍
  23. url(r'^delete_book/', views.delete_book),
  24. # 编辑书籍
  25. url(r'^edit_book/', views.edit_book),
  26.  
  27. # 作者相关的对应关系
  28. # 作者列表
  29. url(r'^author_list/', views.author_list),
  30. # 添加作者
  31. url(r'^add_author/', views.add_author),
  32. # 删除作者
  33. url(r'^delete_author/', views.delete_author),
  34. # 编辑作者
  35. url(r'^edit_author/', views.edit_author),
  36. ]

app01/views.py文件

  1. from django.shortcuts import render, redirect, HttpResponse
  2. from app01 import models
  3. # Create your views here.
  4.  
  5. # 展示出版社列表
  6. def publisher_list(request):
  7. # 去数据库查出所有的出版社,填充到HTML中,给用户返回
  8. ret = models.Publisher.objects.all().order_by("id")
  9. return render(request, 'publisher_list.html', {"publisher": ret})
  10.  
  11. # 添加新的出版社
  12. def add_publisher(request):
  13. error = ""
  14. # 如果是POST请求,我就取到用户填写的数据
  15. if request.method == "POST":
  16. add_publisher = request.POST.get("add_name")
  17. if add_publisher:
  18. # 从数据库中获取所以的出版社
  19. all_publisher = models.Publisher.objects.all()
  20. # 循环判断新添加的出版社名字是否已经存在
  21. for i in all_publisher:
  22. # 如果存在返回错误提示
  23. if i.name == add_publisher:
  24. error = "%s 已经存在" % (add_publisher)
  25. return render(request,'add_publisher.html', {"error": error})
  26. # 通过ORM去数据库里创建一条记录
  27. models.Publisher.objects.create(name=add_publisher)
  28. # 引导用户访问出版社列表页,查看是否添加成功 ———> 跳转
  29. return redirect("/publisher_list/")
  30. else:
  31. error = "error:出版社名字不能为空 !"
  32. # 用户第一次来,我给他返回一个用来填写的HTML页面
  33. return render(request,'add_publisher.html', {"error": error})
  34.  
  35. # 删除出版社
  36. def delete_publisher(request):
  37. # 删除指定的数据
  38. # 1. 从GET请求的参数里面拿到将要删除的ID值
  39. del_id = request.GET.get("id") # 字典取值,取不到默认为None
  40. # 如果取到id值
  41. if del_id:
  42. # 去数据库删除当前的id值的数据
  43. # 1.根据id值查找到数据并进行删除
  44. models.Publisher.objects.get(id=del_id).delete()
  45. # 上面这句删除还可以用这种方式如下:
  46. # del_obj = models.Publisher.objects.get(id=del_id)
  47. # del_obj.delete()
  48. # 返回删除后的页面,跳转到出版社的列表页,查看删除是否成功
  49. return redirect("/publisher_list/")
  50. else:
  51. return HttpResponse('<h1 style="color: red">ERROR : 删除的出版社不存在 !</h1>')
  52.  
  53. # 编辑出版社
  54. def edit_publisher(request):
  55. # 用户修改完出版社的名字,点击提交按钮,给我发来新的出版社名字
  56. if request.method == "POST":
  57. # 取新出版社的名字
  58. edit_id = request.POST.get("id")
  59. edit_newname = request.POST.get("name")
  60. # 更新出版社(数据库)
  61. edit_publisher = models.Publisher.objects.get(id=edit_id)
  62. edit_publisher.name = edit_newname
  63. edit_publisher.save() # 把修改提交到数据库
  64. # 跳转到出版社列表页,查看是否修改成功
  65. return redirect("/publisher_list/")
  66. # 根据id取到编辑的是哪个出版社
  67. # 从GET请求的URL中取到id参数
  68. edit_id = request.GET.get("id")
  69. if edit_id:
  70. # 获取到当前编辑的出版社对象
  71. edit_obj = models.Publisher.objects.get(id=edit_id)
  72. return render(request, "edit_publisher.html", {"publisher": edit_obj})
  73. else:
  74. return HttpResponse('<h1 style="color: red">ERROR : 编辑的出版社不存在 !</h1>')
  75.  
  76. # 展示书籍
  77. def book_list(request):
  78. # 去数据库中查询所有的书籍
  79. all_book = models.Book.objects.all().order_by("id")
  80. # 在HTML页面完成字符串替换(渲染书籍)
  81. return render(request, "book_list.html", {"all_book": all_book})
  82.  
  83. # 添加书籍
  84. def add_book(request):
  85. error = ""
  86. if request.method == "POST":
  87. # 获取新书的名字
  88. add_name = request.POST.get("book_name")
  89. # 获取新书的出版社
  90. publisher = request.POST.get("publisher_id")
  91. if add_name:
  92. # 创建新书对象, 自动提交 (创建方法一)
  93. models.Book.objects.create(title=add_name, publisher_id=publisher)
  94. # 返回到书籍列表页
  95. return redirect("/book_list/")
  96. else:
  97. error = "error:书名不能为空!"
  98. # 取到所有的出版社
  99. ret = models.Publisher.objects.all()
  100. return render(request, "add_book.html", {"publisher_list": ret, "error": error})
  101.  
  102. # 删除书籍
  103. def delete_book(request):
  104. delete_id = request.GET.get("id")
  105. if delete_id:
  106. # 去删除数据库中删除指定id的数据
  107. models.Book.objects.get(id=delete_id).delete()
  108. # 返回书籍列表页面,查看是否删除成功
  109. return redirect("/book_list")
  110. else:
  111. return HttpResponse('<h1 style="color: red">ERROR : 删除的书籍不存在 !</h1>')
  112.  
  113. # 编辑书籍
  114. def edit_book(request):
  115. # 从URL里面获取要删除的书籍的id值
  116. if request.method == "POST":
  117. edit_id = request.POST.get("id")
  118. if edit_id:
  119. # 从提交的数据里面取,书名和书名关联的出版社
  120. new_publisher_id = request.POST.get("publisher")
  121. new_name = request.POST.get("book_name")
  122. # 更新
  123. edit_book_obj = models.Book.objects.get(id=edit_id)
  124. edit_book_obj.title = new_name # 更新书名
  125. edit_book_obj.publisher_id = new_publisher_id # 更新书籍关联的出版社
  126. # 将修改提交到数据库
  127. edit_book_obj.save()
  128. # 返回书籍列表页,查看是否编辑成功
  129. return redirect("/book_list/")
  130. # 取到编辑的书的id值
  131. edit_id = request.GET.get("id")
  132. if edit_id:
  133. publisher_list = models.Publisher.objects.all()
  134. edit_obj = models.Book.objects.get(id=edit_id)
  135. # 返回一个页面,让用户编辑书籍信息
  136. return render(request, "edit_book.html", {"book_obj": edit_obj, "publisher_list": publisher_list})
  137. else:
  138. return HttpResponse('<h1 style="color: red">ERROR : 编辑的书籍不存在 !</h1>')
  139.  
  140. # 作者列表
  141. def author_list(request):
  142. # 查询所有的作者
  143. author_obj = models.Author.objects.get(id=1)
  144. print(author_obj)
  145. all_author = models.Author.objects.all().order_by("id")
  146. return render(request, "author_list.html", {"author_list":all_author})
  147.  
  148. # 添加作者
  149. def add_author(request):
  150. error = ""
  151. if request.method == "POST":
  152. # 取到提交的数据
  153. new_author_name = request.POST.get("author_name")
  154. if new_author_name:
  155. # post提交的数据是多个值的时候,一定要用getlist , 如多选的checkbox和多选的select
  156. books = request.POST.getlist("books")
  157. # 创建作者
  158. new_author_obj = models.Author.objects.create(name=new_author_name)
  159. # 把新作者和书籍建立对应关系,自动提交
  160. new_author_obj.book.set(books)
  161. # 跳转到作者列表页面,查看是否添加成功
  162. return redirect("/author_list/")
  163. else:
  164. error = "error:作者不能为空!"
  165. # 查询所有的书籍
  166. ret = models.Book.objects.all()
  167. return render(request, "add_author.html", {"book_list": ret, "error": error})
  168.  
  169. # 删除作者
  170. def delete_author(request):
  171. # 从URl中获取需要删除的作者的ID值
  172. delete_id = request.GET.get("id")
  173. if delete_id:
  174. # 如果获取到值,那么进行删除
  175. models.Author.objects.get(id=delete_id).delete()
  176. # 跳转到作者列表页,查看是否删除成功
  177. return redirect("/author_list/")
  178. else:
  179. return HttpResponse('<h1 style="color: red">ERROR : 删除的作者不存在 !</h1>')
  180.  
  181. # 编辑作者
  182. def edit_author(request):
  183. # 如果编辑完提交数据过来
  184. if request.method == "POST":
  185. # 拿到提交过来的编辑后的数据
  186. edit_author_id = request.POST.get("author_id")
  187. new_author_name = request.POST.get("author_name")
  188. # 拿到编辑后作者关联的书籍信息
  189. new_books = request.POST.getlist("books")
  190. # 根据ID找到当前编辑的作者对象
  191. edit_author_obj = models.Author.objects.get(id=edit_author_id)
  192. # 更新作者的名字
  193. edit_author_obj.name = new_author_name
  194. # 更新作者关联的书的对应关系
  195. edit_author_obj.book.set(new_books)
  196. # 将修改提交到数据库
  197. edit_author_obj.save()
  198. # 返回作者列表页,查看是否编辑成功
  199. return redirect("/author_list/")
  200. # 从URL里面取要编辑的作者的id信息
  201. edit_id = request.GET.get("id")
  202. # 找到要编辑的作者对象
  203. edit_author_obj = models.Author.objects.get(id=edit_id)
  204. # 查询所有的书籍对象
  205. ret = models.Book.objects.all()
  206. return render(request, "edit_author.html", {"book_list": ret, "author": edit_author_obj})

views.py

HTML文件:出版社、书籍、作者

展示出版社

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>出版社列表</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <nav class="navbar navbar-inverse navbar-fixed-top">
  21. <div class="container-fluid">
  22. <div class="navbar-header">
  23. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
  24. aria-expanded="false" aria-controls="navbar">
  25. <span class="sr-only">Toggle navigation</span>
  26. <span class="icon-bar"></span>
  27. <span class="icon-bar"></span>
  28. <span class="icon-bar"></span>
  29. </button>
  30. <a class="navbar-brand" href="https://v3.bootcss.com/examples/dashboard/#">BMS-S10</a>
  31. </div>
  32. <div id="navbar" class="navbar-collapse collapse">
  33. <ul class="nav navbar-nav navbar-right">
  34. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Dashboard</a></li>
  35. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Settings</a></li>
  36. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Profile</a></li>
  37. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Help</a></li>
  38. </ul>
  39. <form class="navbar-form navbar-right">
  40. <input type="text" class="form-control" placeholder="Search...">
  41. </form>
  42. </div>
  43. </div>
  44. </nav>
  45. <div class="container-fluid">
  46. <div class="row">
  47. <div class="col-sm-3 col-md-2 sidebar">
  48. <ul class="nav nav-sidebar">
  49. <li class="active"><a href="/publisher_list/">出版社列表</a></li>
  50. <li><a href="/book_list/">书籍列表</a></li>
  51. <li><a href="/author_list/">作者列表</a></li>
  52. </ul>
  53. </div>
  54. <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
  55. <h1 class="page-header">出版社管理页面</h1>
  56. <div class="panel panel-primary">
  57. <!-- Default panel contents -->
  58. <div class="panel-heading">出版社列表 <i class="fa fa-thumb-tack pull-right"></i></div>
  59. <div class="panel-body">
  60. <div class="row" style="margin-bottom: 15px">
  61. <div class="col-md-4">
  62. <div class="input-group">
  63. <input type="text" class="form-control" placeholder="Search for...">
  64. <span class="input-group-btn">
  65. <button class="btn btn-default" type="button">搜索</button>
  66. </span>
  67. </div><!-- /input-group -->
  68. </div><!-- /.col-md-4 -->
  69. <div class="col-md-1 pull-right">
  70. <a href="/add_publisher/" class="btn btn-success">新增</a>
  71. <!-- <button class="btn btn-success" data-toggle="modal" data-target="#myModal">新增</button>-->
  72. </div>
  73. </div><!-- /.row -->
  74. <table class="table table-bordered">
  75. <thead>
  76. <tr>
  77. <th>ID值</th>
  78. <th>出版社名称</th>
  79. <th>操作</th>
  80. </tr>
  81. </thead>
  82. <tbody>
  83. {% for publisher in publisher %}
  84. <tr>
  85. <td>{{ forloop.counter }}</td>
  86. <td>{{ publisher.name }}</td>
  87. <td>
  88. <a class="btn btn-danger" href="/delete_publisher/?id={{ publisher.id }}">删除</a>
  89. <a class="btn btn-info" href="/edit_publisher/?id={{ publisher.id }}">编辑</a>
  90. </td>
  91. </tr>
  92. {% endfor %}
  93. </tbody>
  94. </table>
  95. <nav aria-label="Page navigation" class="text-right">
  96. <ul class="pagination">
  97. <li>
  98. <a href="#" aria-label="Previous">
  99. <span aria-hidden="true">&laquo;</span>
  100. </a>
  101. </li>
  102. <li><a href="#">1</a></li>
  103. <li><a href="#">2</a></li>
  104. <li><a href="#">3</a></li>
  105. <li><a href="#">4</a></li>
  106. <li><a href="#">5</a></li>
  107. <li>
  108. <a href="#" aria-label="Next">
  109. <span aria-hidden="true">&raquo;</span>
  110. </a>
  111. </li>
  112. </ul>
  113. </nav>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. </div>
  119. <!-- Bootstrap core JavaScript
  120. ================================================== -->
  121. <!-- Placed at the end of the document so the pages load faster -->
  122. <script src="/static/jquery-3.3.1.js"></script>
  123. <script src="/static/bootstrap/js/bootstrap.min.js"></script>
  124. </body>
  125. </html>

publisher_list.html

添加出版社

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>添加出版社</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. {# 标题 #}
  25. <div class="panel-heading">添加出版社</div>
  26. <div class="panel-body">
  27. {# form表单 #}
  28. <form class="form-horizontal" action="/add_publisher/" method="post">
  29. <div class="form-group">
  30. <label for="publisher_name" class="col-sm-2 control-label">出版社</label>
  31. <div class="col-sm-10">
  32. <input type="text" class="form-control" id="inputEmail3" placeholder="出版社"
  33. name="add_name">
  34. </div>
  35. </div>
  36. <div class="form-group">
  37. <div class="col-sm-offset-2 col-sm-10">
  38. <button type="submit" class="btn btn-success">提交</button>
  39. <h3 style="color: red"> {{ error }} </h3>
  40. </div>
  41. </div>
  42. </form>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </body>
  49. </html>

add_publisher.html

编辑出版社

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>编辑出版社</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. <div class="panel-heading">编辑出版社</div>
  25. <div class="panel-body">
  26. <form class="form-horizontal" action="/edit_publisher/" method="post">
  27. <input type="text" value="{{ publisher.id }}" name="id" style="display: none;">
  28. <div class="form-group">
  29. <label for="publisher_name" class="col-sm-2 control-label">出版社</label>
  30. <div class="col-sm-10">
  31. <input type="text" class="form-control" id="inputEmail3" value="{{ publisher.name }}"
  32. name="name">
  33. </div>
  34. </div>
  35. <div class="form-group">
  36. <div class="col-sm-offset-2 col-sm-10">
  37. <button type="submit" class="btn btn-success">提交</button>
  38. <h3 style="color: red"> {{ error }} </h3>
  39. </div>
  40. </div>
  41. </form>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </div>
  48. </body>
  49. </html>

edit_publisher.html

展示书籍

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>书籍列表</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <nav class="navbar navbar-inverse navbar-fixed-top">
  21. <div class="container-fluid">
  22. <div class="navbar-header">
  23. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
  24. aria-expanded="false" aria-controls="navbar">
  25. <span class="sr-only">Toggle navigation</span>
  26. <span class="icon-bar"></span>
  27. <span class="icon-bar"></span>
  28. <span class="icon-bar"></span>
  29. </button>
  30. <a class="navbar-brand" href="https://v3.bootcss.com/examples/dashboard/#">BMS-S10</a>
  31. </div>
  32. <div id="navbar" class="navbar-collapse collapse">
  33. <ul class="nav navbar-nav navbar-right">
  34. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Dashboard</a></li>
  35. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Settings</a></li>
  36. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Profile</a></li>
  37. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Help</a></li>
  38. </ul>
  39. <form class="navbar-form navbar-right">
  40. <input type="text" class="form-control" placeholder="Search...">
  41. </form>
  42. </div>
  43. </div>
  44. </nav>
  45. <div class="container-fluid">
  46. <div class="row">
  47. <div class="col-sm-3 col-md-2 sidebar">
  48. <ul class="nav nav-sidebar">
  49. <li><a href="/publisher_list/">出版社列表页</a></li>
  50. <li class="active"><a href="/book_list/">书籍列表</a></li>
  51. <li><a href="/author_list/">作者列表</a></li>
  52. </ul>
  53. </div>
  54. <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
  55. <h1 class="page-header">出版社管理页面</h1>
  56. <div class="panel panel-primary">
  57. <!-- Default panel contents -->
  58. <div class="panel-heading">书籍列表 <i class="fa fa-thumb-tack pull-right"></i></div>
  59. <div class="panel-body">
  60. <div class="row" style="margin-bottom: 15px">
  61. <div class="col-md-4">
  62. <div class="input-group">
  63. <input type="text" class="form-control" placeholder="Search for...">
  64. <span class="input-group-btn">
  65. <button class="btn btn-default" type="button">搜索</button>
  66. </span>
  67. </div><!-- /input-group -->
  68. </div><!-- /.col-md-4 -->
  69. <div class="col-md-1 pull-right">
  70. <a href="/add_book/" class="btn btn-success">新增</a>
  71. <!-- <button class="btn btn-success" data-toggle="modal" data-target="#myModal">新增</button>-->
  72. </div>
  73. </div><!-- /.row -->
  74. <table class="table table-bordered">
  75. <thead>
  76. <tr>
  77. <th>ID值</th>
  78. <th>书名</th>
  79. <th>出版社</th>
  80. <th>操作</th>
  81. </tr>
  82. </thead>
  83. <tbody>
  84. {% for book in all_book %}
  85. <tr>
  86. <td>{{ forloop.counter }}</td>
  87. <td>{{ book.title }}</td>
  88. <td>{{ book.publisher.name }}</td>
  89. <td>
  90. <a class="btn btn-danger" href="/delete_book/?id={{ book.id }}">删除</a>
  91. <a class="btn btn-info" href="/edit_book/?id={{ book.id }}">编辑</a>
  92. </td>
  93. </tr>
  94. {% endfor %}
  95. </tbody>
  96. </table>
  97. <nav aria-label="Page navigation" class="text-right">
  98. <ul class="pagination">
  99. <li>
  100. <a href="#" aria-label="Previous">
  101. <span aria-hidden="true">&laquo;</span>
  102. </a>
  103. </li>
  104. <li><a href="#">1</a></li>
  105. <li><a href="#">2</a></li>
  106. <li><a href="#">3</a></li>
  107. <li><a href="#">4</a></li>
  108. <li><a href="#">5</a></li>
  109. <li>
  110. <a href="#" aria-label="Next">
  111. <span aria-hidden="true">&raquo;</span>
  112. </a>
  113. </li>
  114. </ul>
  115. </nav>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. <!-- Bootstrap core JavaScript
  122. ================================================== -->
  123. <!-- Placed at the end of the document so the pages load faster -->
  124. <script src="/static/jquery-3.3.1.js"></script>
  125. <script src="/static/bootstrap/js/bootstrap.min.js"></script>
  126. </body>
  127. </html>

book_list.html

添加书籍

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>添加书籍</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. {# 标题 #}
  25. <div class="panel-heading">添加书籍</div>
  26. <div class="panel-body">
  27. <form class="form-horizontal" action="/add_book/" method="post">
  28. <div class="form-group">
  29. <label for="publisher_name" class="col-sm-2 control-label">书名</label>
  30. <div class="col-sm-10">
  31. <input type="text" class="form-control" id="inputEmail3" placeholder="书名"
  32. name="book_name">
  33. </div>
  34. </div>
  35. <div class="form-group">
  36. <label for="publisher_name" class="col-sm-2 control-label">出版社</label>
  37. <div class="col-sm-10">
  38. <select class="form-control" name="publisher_id">
  39. {% for publisher in publisher_list %}
  40. <option value="{{ publisher.id }}">{{ publisher.name }}</option>
  41. {% endfor %}
  42. </select>
  43. </div>
  44. </div>
  45. <div class="form-group">
  46. <div class="col-sm-offset-2 col-sm-10">
  47. <button type="submit" class="btn btn-success">提交</button>
  48. <h4 style="color: red;">{{ error }}</h4>
  49. </div>
  50. </div>
  51. </form>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </body>
  58. </html>

add_book.html

编辑书籍

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>编辑书籍</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. <div class="panel-heading">编辑书籍</div>
  25. <div class="panel-body">
  26. <form class="form-horizontal" action="/edit_book/" method="post">
  27. <input type="text" name="id" value="{{ book_obj.id }}" style="display: none">
  28. <div class="form-group">
  29. <label for="publisher_name" class="col-sm-2 control-label">书名</label>
  30. <div class="col-sm-10">
  31. <input type="text" name="book_name" value="{{ book_obj.title }}">
  32. </div>
  33. </div>
  34. <div class="form-group">
  35. <label for="publisher_name" class="col-sm-2 control-label">出版社</label>
  36. <div class="col-sm-10">
  37. <select class="form-control" name="publisher">
  38. {% for publisher in publisher_list %}
  39. {% if book_obj.publisher.id == publisher.id %}
  40. <option selected value="{{ publisher.id }}">{{ publisher.name }}</option>
  41. {% endif %}
  42. <option value="{{ publisher.id }}">{{ publisher.name }}</option>
  43. {% endfor %}
  44. </select>
  45. </div>
  46. </div>
  47. <div class="form-group">
  48. <div class="col-sm-offset-2 col-sm-10">
  49. <button type="submit" class="btn btn-success">提交</button>
  50. </div>
  51. </div>
  52. </form>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </body>
  59. </html>

edit_book.html

展示作者

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>作者列表</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <nav class="navbar navbar-inverse navbar-fixed-top">
  21. <div class="container-fluid">
  22. <div class="navbar-header">
  23. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar"
  24. aria-expanded="false" aria-controls="navbar">
  25. <span class="sr-only">Toggle navigation</span>
  26. <span class="icon-bar"></span>
  27. <span class="icon-bar"></span>
  28. <span class="icon-bar"></span>
  29. </button>
  30. <a class="navbar-brand" href="https://v3.bootcss.com/examples/dashboard/#">BMS-S10</a>
  31. </div>
  32. <div id="navbar" class="navbar-collapse collapse">
  33. <ul class="nav navbar-nav navbar-right">
  34. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Dashboard</a></li>
  35. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Settings</a></li>
  36. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Profile</a></li>
  37. <li><a href="https://v3.bootcss.com/examples/dashboard/#">Help</a></li>
  38. </ul>
  39. <form class="navbar-form navbar-right">
  40. <input type="text" class="form-control" placeholder="Search...">
  41. </form>
  42. </div>
  43. </div>
  44. </nav>
  45. <div class="container-fluid">
  46. <div class="row">
  47. <div class="col-sm-3 col-md-2 sidebar">
  48. <ul class="nav nav-sidebar">
  49. <li><a href="/publisher_list/">出版社列表页</a></li>
  50. <li><a href="/book_list/">书籍列表</a></li>
  51. <li class="active"><a href="/author_list/">作者列表</a></li>
  52. </ul>
  53. </div>
  54. <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
  55. <h1 class="page-header">出版社管理页面</h1>
  56. <div class="panel panel-primary">
  57. <!-- Default panel contents -->
  58. <div class="panel-heading">作者列表 <i class="fa fa-thumb-tack pull-right"></i></div>
  59. <div class="panel-body">
  60. <div class="row" style="margin-bottom: 15px">
  61. <div class="col-md-4">
  62. <div class="input-group">
  63. <input type="text" class="form-control" placeholder="Search for...">
  64. <span class="input-group-btn">
  65. <button class="btn btn-default" type="button">搜索</button>
  66. </span>
  67. </div><!-- /input-group -->
  68. </div><!-- /.col-md-4 -->
  69. <div class="col-md-1 pull-right">
  70. <a href="/add_author/" class="btn btn-success">新增</a>
  71. <!-- <button class="btn btn-success" data-toggle="modal" data-target="#myModal">新增</button>-->
  72. </div>
  73. </div><!-- /.row -->
  74. <table class="table table-bordered">
  75. <thead>
  76. <tr>
  77. <th>#</th>
  78. <th>ID</th>
  79. <th>名字</th>
  80. <th>作品</th>
  81. <th>操作</th>
  82. </tr>
  83. </thead>
  84. <tbody>
  85. {% for author in author_list %}
  86. <tr>
  87. <td>{{ forloop.counter }}</td>
  88. <td>{{ author.id }}</td>
  89. <td>{{ author.name }}</td>
  90. <td>{% for book in author.book.all %}
  91. 《{{ book.title }}》 &nbsp;
  92. {% endfor %}
  93. </td>
  94. <td>
  95. <a class="btn btn-danger" href="/delete_author/?id={{ author.id }}"><i
  96. class="fa fa-trash-o fa-fw"></i>删除</a>
  97. <a class="btn btn-info" href="/edit_author/?id={{ author.id }}"><i
  98. class="fa fa-pencil fa-fw"></i>编辑</a>
  99. </td>
  100. </tr>
  101. {% endfor %}
  102. </tbody>
  103. </table>
  104. <nav aria-label="Page navigation" class="text-right">
  105. <ul class="pagination">
  106. <li>
  107. <a href="#" aria-label="Previous">
  108. <span aria-hidden="true">&laquo;</span>
  109. </a>
  110. </li>
  111. <li><a href="#">1</a></li>
  112. <li><a href="#">2</a></li>
  113. <li><a href="#">3</a></li>
  114. <li><a href="#">4</a></li>
  115. <li><a href="#">5</a></li>
  116. <li>
  117. <a href="#" aria-label="Next">
  118. <span aria-hidden="true">&raquo;</span>
  119. </a>
  120. </li>
  121. </ul>
  122. </nav>
  123. </div>
  124. </div>
  125. </div>
  126. </div>
  127. </div>
  128. <!-- Bootstrap core JavaScript
  129. ================================================== -->
  130. <!-- Placed at the end of the document so the pages load faster -->
  131. <script src="/static/jquery-3.3.1.js"></script>
  132. <script src="/static/bootstrap/js/bootstrap.min.js"></script>
  133. </body>
  134. </html>

author_list.html

添加作者

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>添加作者</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. {# 标题 #}
  25. <div class="panel-heading">添加作者</div>
  26. <div class="panel-body">
  27. <form class="form-horizontal" action="/add_author/" method="post">
  28. <div class="form-group">
  29. <label for="publisher_name" class="col-sm-2 control-label">作者</label>
  30. <div class="col-sm-10">
  31. <input type="text" name="author_name">
  32. </div>
  33. </div>
  34. <div class="form-group">
  35. <label for="publisher_name" class="col-sm-2 control-label">作品</label>
  36. <div class="col-sm-10">
  37. <select class="form-control" multiple name="books">
  38. {% for book in book_list %}
  39. <option value="{{ book.id }}">{{ book.title }}</option>
  40. {% endfor %}
  41. </select>
  42. </div>
  43. </div>
  44. <div class="form-group">
  45. <div class="col-sm-offset-2 col-sm-10">
  46. <button type="submit" class="btn btn-success">提交</button>
  47. <h4 style="color: red;">{{ error }}</h4>
  48. </div>
  49. </div>
  50. </form>
  51. </div>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </body>
  57. </html>

add_author.html

编辑作者

  1. <!DOCTYPE html>
  2. <!-- saved from url=(0042)https://v3.bootcss.com/examples/dashboard/ -->
  3. <html lang="zh-CN">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
  9. <meta name="description" content="">
  10. <meta name="author" content="">
  11. <link rel="icon" href="https://v3.bootcss.com/favicon.ico">
  12. <title>编辑作者</title>
  13. <!-- Bootstrap core CSS -->
  14. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  15. <!-- Custom styles for this template -->
  16. <link href="/static/dashboard.css" rel="stylesheet">
  17. <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.min.css">
  18. </head>
  19. <body>
  20. <div class="container">
  21. <div class="row">
  22. <div class="col-md-6 col-md-offset-3">
  23. <div class="panel panel-primary">
  24. <div class="panel-heading">编辑书籍</div>
  25. <div class="panel-body">
  26. <form class="form-horizontal" action="/edit_author/" method="post">
  27. <input type="text" name="author_id" value="{{ author.id }}" style="display: none">
  28. <div class="form-group">
  29. <label for="publisher_name" class="col-sm-2 control-label">作者</label>
  30. <div class="col-sm-10">
  31. <input type="text" name="author_name" value="{{ author.name }}">
  32. </div>
  33. </div>
  34. <div class="form-group">
  35. <label for="publisher_name" class="col-sm-2 control-label">作品</label>
  36. <div class="col-sm-10">
  37. <select class="form-control" multiple name="books">
  38. {% for book in book_list %}
  39. {# 如果当前这本书 在 当前作者关联的所有书 里面 #}
  40. {% if book in author.book.all %}
  41. <option selected value="{{ book.id }}">{{ book.title }}</option>
  42. {% else %}
  43. <option value="{{ book.id }}">{{ book.title }}</option>{% endif %}
  44. {% endfor %}
  45. </select>
  46. </div>
  47. </div>
  48. <div class="form-group">
  49. <div class="col-sm-offset-2 col-sm-10">
  50. <button type="submit" class="btn btn-success">提交</button>
  51. </div>
  52. </div>
  53. </form>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </body>
  60. </html>

edit_author.html

Django练习——图书管理系统的更多相关文章

  1. 11 基于django的图书管理系统 多表

    1.需求 作业需求:1.列出图书列表.出版社列表.作者列表2.点击作者,会列出其出版的图书列表3.点击出版社,会列出旗下图书列表4.可以创建.修改.删除 图书.作者.出版社 踩分点:1.满足需求1,2 ...

  2. Python高级进阶(二)Python框架之Django写图书管理系统(LMS)

    正式写项目准备前的工作 Django是一个Web框架,我们使用它就是因为它能够把前后端解耦合而且能够与数据库建立ORM,这样,一个Python开发工程师只需要干自己开发的事情就可以了,而在使用之前就我 ...

  3. Django(图书管理系统)

    图书管理系统 注意事项 1.models 要创建好,规划好自己的表,以及各种表关系 2.url正则要写好 3.settings的配置 4.利用bootstarp 进行布局更漂亮哦 5.注意orm  各 ...

  4. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

  5. Django之图书管理系统

    出版社的增删改查 展示出版社列表: 1. 创建一个表结构:   2. 再配合那俩条命令即可创建一个press表 创建出版社函数,并在url中进行配置 创建HTML页面,展示出版社的表 for循环 {% ...

  6. Django(图书管理系统)#转

    自己虽然实现了, 但是写的太LOW了,为了不误导大家,推荐一篇好的博客 https://www.cnblogs.com/alice-bj/p/9114084.html

  7. Django——图书管理系统

    基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...

  8. Django实现简单的图书管理系统

    目录 Django写图书管理系统 功能截图 创建Django项目 开始项目 配置文件 建立路由关系 开始写Django项目 编写核心逻辑函数 写前端页面 add_author.html add_boo ...

  9. 在Django中使用ORM创建图书管理系统

    一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...

随机推荐

  1. 虹软2.0 离线人脸识别 Android 开发 Demo

    环境要求1.运行环境 armeabi-v7a2.系统要求 Android 5.0 (API Level 21)及以上3.开发环境 Android Studio 下载地址:https://github. ...

  2. Vue双向绑定原理,教你一步一步实现双向绑定

    当今前端天下以 Angular.React.vue 三足鼎立的局面,你不选择一个阵营基本上无法立足于前端,甚至是两个或者三个阵营都要选择,大势所趋. 所以我们要时刻保持好奇心,拥抱变化,只有在不断的变 ...

  3. C# 一般处理程序ashx接收服务端post过来json数据

    这个和前端js的接收方式有点不一样,前端接收用request.form["xxx"]即可

  4. js学习之路2: JavaScript 变量

    1. 变量的创建 首先,可以创建一个变量 var firstVar; 这时候,并没有给它赋值.这个变量还是空的. 然后,我们可以给这个变量赋值. firstVar = 128: 2. 变量的赋值 变量 ...

  5. Cs231n-assignment 1作业笔记

    KNN assignment1 KNN讲解参见: https://blog.csdn.net/u014485485/article/details/79433514?utm_source=blogxg ...

  6. java每日一总结

    一, 1.安装jdk时路径中不能有空格或者中文. 二, 1.进入文件夹:cd+文件夹名称. 2.进入多级文件夹:cd+文件夹1\文件夹2\文件夹3. 3.返回上一级:cd 空格+... 4.返回根路径 ...

  7. swoole多端口监听

    今天测试swoole写webserver实现多端口监听.记录下爬过的坑:关于tcp协议监听触发不到receive!!!!! 首先上服务端代码 class Http { /** * 服务实例 * @va ...

  8. WIN提权总结【本地存档-转载】

    [ web提权 ] 1.能不能执行cmd就看这个命令:net user,net不行就用net1,再不行就上传一个net到可写可读目录,执行/c c:\windows\temp\cookies\net1 ...

  9. Scheme来实现八皇后问题(2)

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/9790466.html 作者:窗户 Q ...

  10. virtualenvwrapper 虚拟环境的使用 和 python 安装源的更改

    virtualenvwrapper 虚拟环境的使用 鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper. virtualenvwrapper提供了一系 ...