环境创建

创建虚拟环境:
conda create -n django python==3.6
进入环境:
source activate django
安装Django:
pip install Django ==1.10
创建Django工程:

数据库迁移(文件数据库):
python manage.py makemigrations
python manage.py migrate
运行Django项目:(默认端口是8000)
python manage.py runserver
若修改端口直接在其后加端口即可
python manage.py runserver 9000

环境优化(语言及时区):
在settings.py里边修改:
LANGUAGE_CODE = ‘zh-hans’
TIME_ZONE = ‘Asia/Shanghai’

创建一给超级用户:
python manage.py createsuperuser
进入后台管理系统:

创建第一个app:book

创建app:
python manage.py startapp book

创建数据库表:
models.py

from django.db import models# Create your models here.
#  关联关系:   书籍:人物====> 1:n
# 书籍
class BookInfo(models.Model):# id如果没有指定, 默认会添加id并作为主键(primary_key(pk))btitle = models.CharField(max_length=50, unique=True, verbose_name="图书名称") # 图书名称, 并限定最大长度为50;bpub_date = models.DateField(verbose_name="出版日期")# 添加书籍的详解bcontent = models.TextField(default="书籍摘要")# 添加图片, 并指定上传图片存放位置;   # hello.jpg   ====  static/uploads/hello.jpgbimg = models.ImageField(default=None, upload_to='static/uploads/')class Meta:# 后台的单数显示verbose_name = "图书信息"# 后台的复数显示, 如果不指定, 在单数后面默认加s;verbose_name_plural =  "图书信息"def __str__(self):return  "%s" %(self.btitle)# 书籍中的英雄人物
class HeroInfo(models.Model):hname = models.CharField(max_length=50, verbose_name="人物名称")hgender = models.BooleanField(verbose_name="性别")hcontent = models.TextField(verbose_name="人物介绍")  # 人物介绍# 多的一端写外键hbook = models.ForeignKey(BookInfo, verbose_name="所属书籍")@propertydef gender(self):if self.hgender:return  "男"else:return  "女"class Meta:verbose_name = "人物信息"verbose_name_plural  = "人物信息"def __str__(self):return  "%s" %(self.hname)

激活模型:
settings.py文件:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','book'
]

数据库迁移到本机的mysql数据库中:
settings.py:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',# 数据库名称;'NAME': 'DjangoProject','USER': 'cooffee','PASSWORD': 'cooffee','HOST': 'localhost','PORT': '3306',}
}

在主项目的__init__.py文件中:
因为该版本的Django识别的是MySQLdb,而我门用的是python3,所以要把pymsql伪装为MySQLdb

import  pymysql
pymysql.install_as_MySQLdb()

进行数据库迁移
python manage.py makemigrations
python manage.py migrate

mysql数据库信息检测:

若没有使用本机mysql数据库,那么根据原来settings.py内容:

 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}}

可知道数据迁移到文件数据库db.sqlite3中。
进行数据检测:
进入python shell
python manage.py shell

可对数据进行增删改查:
表明数据库迁移到db.sqlite3成功

新建图书信息:

查询及输出图书信息:

修改图书信息:

b.btitle=u"天龙八部"
b.save()

删除图书信息:

b.delete()

关联对象的操作:
添加关联对象:

获得关联集合:

添加关联对象的另一个操作:

后台管理:

在book/admin.py:

from django.contrib import admin# Register your models here.
from book.models import BookInfo, HeroInfo#关联注册
# 在书籍添加表单中增加行内表单(添加人物)
class HeroInline(admin.TabularInline):model = HeroInfoextra = 3class BookInfoAdmin(admin.ModelAdmin):#显示字段list_display = ['btitle', 'bpub_date']inlines =  [HeroInline]class HeroInfoAdmin(admin.ModelAdmin):# 显示字段list_display = ['hname', 'hcontent', 'hbook', 'gender']#过滤字段,过滤框会出现在右侧list_filter =  ['hname']#搜索字段,搜索框会出现在上侧search_fields = ['hname', 'hcontent']#分页,分页框会出现在下侧list_per_page = 2#注册模型
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)


URL设置

djangoproject/urls.py

from django.conf.urls import url, include
from django.contrib import adminurlpatterns = [url(r'^admin/', admin.site.urls),#r后的为正则表达式,匹配到之后去找book.urls的内容url(r'^$', include('book.urls')),url(r'book/', include('book.urls')),
]

book/urls.py:

from django.conf.urls import url
from book import views
#命名空间
app_name = 'book'
urlpatterns = [url(r'^$', views.index),url(r'^(?P<id>\d+)/$', views.detail)
]

视图函数

bool/views.py:

from django.shortcuts import render# Create your views here.
from book.models import BookInfo# 在flask里面, 默认请求是request
# Django里面的请求对象必须作为参数接收
def index(request):books = BookInfo.objects.all()return render(request,'blog/index.html',context={'books':books})def detail(request,id):# 1). 查询指定id对应的书籍对象book = BookInfo.objects.get(id=id)# 2). 根据数据关联关系, 获取该书籍中包含的所有人物信息heros = book.heroinfo_set.all()return render(request,'blog/detail.html',context={'book':book,'heros':heros})

html:

在settings.py中设置:

为了找到static的设置,static存css,js等样式。当前项目的static文件夹

为了找到html存放的位置,设置为os.path.join(BASE_DIR, ‘templates’)当前项目的templates文件夹

各个html的内容:

base.html:

<!DOCTYPE HTML>
<html><head><title>{% block title %} {% endblock %}</title><link href="/static/css/style.css" rel="stylesheet" type="text/css"  media="all" /></head><body><!---start-wrap---><div class="wrap"><!---start-header---><div class="header"><!---start-logo---><div class="logo"><a href="index.html"><img src="/static/images/logo.png" title="logo" /></a></div><!---End-logo---><!---start-head-social-icons---><div class="top-social-icons"><div class="social-icons"><ul><li><a href="#"><img src="/static/images/facebook1.png" title="facebook" /></a></li><li><a href="#"><img src="/static/images/twitter1.png" title="Twitter" /></a></li><li><a href="#"><img src="/static/images/youtube1.png" title="Youtube" /></a></li></ul></div><div class="clear"> </div></div><div class="clear"> </div><!---End-head-social-icons---><!---start-top-nav----><div class="top-nav"><ul><li><a href="index.html">Home</a></li><li><a href="elements.html">About us</a></li>
{#                      <li><a href="elements.html">Our Purpose & Objective</a></li>#}
{#                      <li><a href="elements.html">Membership</a></li>#}<li><a href="elements.html">Asian & Wellness Forum</a></li><li><a href="search.html">Search</a></li><li><a href="contact.html">Contact</a></li><div class="clear"> </div></ul></div><!---End-top-nav---->{% block content %}{% endblock %}<!---End-Content----><!---start-sidebar----><div class="side-bar"><div class="sidebar-top-add"><h3>Sponsersed by</h3><a href="#"><img src="/static/images/add2.png" title="add"/></a></div><div class="presedent-img"><div class="Latest-news-title side-bar-sub-heading"><h3>Form the desk of President</h3><h5> </h5><div class="clear"> </div></div><a href="#"><img src="/static/images/prasedent.png" title="name" /></a></div><div class="sponsers-list"><h3>Sponsersed by</h3><a href="#"><img src="/static/images/spons1.png" title="sponser-name" /></a><a href="#"><img src="/static/images/spons1.png" title="sponser-name" /></a></div></div><div class="clear"> </div><!---End-sidebar----></div><!---End-main----></div><!---start-footer----><div class="footer"><div class="footer-nav-grid"><ul><li><a href="#">Home</a></li><li><a href="#">About us</a></li><li><a href="#">Our Purpose & Objective</a></li><li><a href="#">Membership</a></li><li><a href="#">Asian & Wellness Forum</a></li><li><a href="#">Courses</a></li><li><a href="#">Contact</a></li><div class="clear"> </div></ul></div><div class="footer-social-icons"><ul><li><a href="#"><img src="/static/images/facebook.png" title="facebook" /></a></li><li><a href="#"><img src="/static/images/twitter.png" title="twitter" /></a></li><li><a href="#"><img src="/static/images/youtube.png" title="Youtube" /></a></li></ul></div><div class="footer-form"><h3>Quick Contact</h3><form><div class="footer-text-boxs"><input type="text" class="textbox" value="Name:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Name';}"><input type="text" class="textbox" value="Email:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Email';}"><input type="text" class="textbox" value="mobile:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'mobile';}"><input type="text" class="textbox" value="Website:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Website';}"></div><div class="footer-text-area"><textarea value="Message:" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Message';}">Message</textarea></div><input type="submit" value="Call Me"></form></div><div class="clear"> </div></div><!---End-footer----><!---End-wrap--->
</body>
</html>

blog/index.html:

% extends 'base.html' %}{% block title %} 首页{% endblock %}{% block content %}<!---start-main----><div class="main"><!---start-Content----><div class="content"><div class="image-slider"><h3>Featured</h3><div class="container"><div id="slides"><img src="/static/images/slider1.jpg" alt=""><img src="/static/images/slider2.jpg" alt=""><img src="/static/images/slider3.jpg" alt=""><img src="/static/images/slider4.jpg" alt=""><a href="#" class="slidesjs-next slidesjs-navigation"><iclass="icon-chevron-right icon-large"></i></a></div></div><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script src="/static/js/jquery.slides.min.js"></script><script>$(function () {$('#slides').slidesjs({width: 940,height: 285,navigation: false});});</script></div><div class="clear"></div><div class="Latest-news"><div class="Latest-news-title"><h3>Latest Happening @ mawspa</h3><h5></h5><div class="clear"></div></div>{% for book in books %}<div class="blog-articals"><div class="artical"><div class="artical-heading"><a href="/book/{{ book.id }}/"><h3>{{ book.btitle }}</h3></a><h4><span>Post On</span> {{ book.bpub_date }}</h4></div><div class="artical-box"><div class="artical-img"><a href="/book/{{ book.id }}/"><img src="/{{ book.bimg }}" title="imag-name"/></a></div><div class="artical-info"><p>{{ book.bcontent }}<a href="/book/{{ book.id }}/">Read more...</a></p></div><div class="clear"></div></div></div></div>{% endfor %}</div><a class="button" href="#">View All Updates</a></div></div><!---End-Content---->
{% endblock %}

blog/detail.html:

{% extends 'base.html' %}{% block title  %} 人物信息 {% endblock %}
{% block content %}<!---start-main----><div class="main"><!---start-Content----><div class="content"><div class="basic-elements"><div class="sub-wrap"><div class="footer-form"><h3 style="font-size: 50px;text-align: center ">{{ book.btitle }}</h3></div>{% for hero in heros %}<div class="common-heading"><h1>{{ hero.hname }}</h1></div><div class="headings"><p>{{ hero.hcontent }}</p></div>{% endfor %}</div><br></div><div class="clear"></div></div></div><!---End-Content---->{% endblock  %}

Django 图书-英雄相关推荐

  1. Django 图书管理

    Django 图书管理 (一)创建Django项目 - books (二)创建并注册应用 - index 1.创建index应用 2.注册index应用 (三)创建数据库 - books (四)配置M ...

  2. Python基于Django图书借阅管理系统

    技术环境: PyCharm + Django2.2 + Python3.6 + mysql5.6[独家创作,大神作品] 最新大作基于Python语言Django框架实现的一个图书系统,项目一个分2个身 ...

  3. Django 图书借书系统

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.Django是什么? 二.django安装 1.安装 2.需要的pip list 安装 三.django 建立图书 ...

  4. 【django 图书信息】

    (一)创建Django项目 - books 创建Django项目,设置项目位置与项目名 (二)创建并注册应用 - index 1.创建index应用 在项目配置文件里,导入os模块 在控制台执行 py ...

  5. django图书管理系统:

    目录 图书管理系统: day54 文件夹: settings.py: urls.py migrations文件夹 __ init __ models.py: views.py static文件夹 te ...

  6. 【django图书案例】

    这里写自定义目录标题 一.实现步骤 (一)创建Django项目 - books (二)创建并注册应用 - index 1.创建index应用 2.注册index应用 (三)创建数据库 - books ...

  7. 6.Django 图书列表练习

    文章目录 1.搭建环境 1.1创建库 1.2 创建Django项目 1.3 路径&中间键问题 1.4 连接MySQL数据库 1.5 创建表 1. 表数据 2. 基础表 3. 外键字段 4. 完 ...

  8. pythondjango图书_python大佬养成计划----Django图书人物适配系统(后台)

    Django Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Pyt ...

  9. python django图书管理系统_Python框架:Django写图书管理系统(LMS)

    Django模版文件配置 文件路径 test_site -- test_site -- settings.py TEMPLATES = [ { 'BACKEND': 'django.template. ...

最新文章

  1. 行波iq调制器_高速InP基半导体电光调制器行波电极结构研究
  2. SSO 单点登录会话管理
  3. android6.0 主题,Android 6.0 DatePickerDialog主题
  4. 斗地主程序设计c语言,C语言斗地主游戏v0.1
  5. 重新认识mysql基本知识
  6. 微信小程序:背景图片在电脑可以显示,真机测试时无法显示
  7. Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组
  8. [导入]韩语基本会话
  9. dg修改归档目录 oracle_DG环境下ORACLE自动回收归档空间
  10. 红橙Darren视频笔记 界面优化与屏幕适配(下)
  11. 1个app的完整测试用例_同你分享1个完整的聚类分析案例
  12. jquery 下载 安装 浏览器支持
  13. UDS协议入门之10服务
  14. 上市公司频推高送转 年报预告掘金“白马股”(名单)
  15. 普度大学计算机科学博士,Purdue的CS「普渡大学西拉法叶分校计算机科学系」
  16. 在Outlook中更改签名
  17. 服务器怎么安装exis系统,exis 服务器安装
  18. 计算机在职双证博士的学校,国内在职双证博士5所高校是哪些
  19. Microsoft office professional plus2010
  20. 计算机全选的键盘,什么是全选快捷键,我将告诉您什么是计算机全选快捷键

热门文章

  1. Python+Vue计算机毕业设计童童摄影馆管理系统yyt8p(源码+程序+LW+部署)
  2. 【算法设计zxd】第四章蛮力法 1.枚举法 02穷举查找
  3. Android中ExpandableListView控件的用法详解
  4. android开发过程中遇到的问题
  5. Activity理念(一个字头的诞生)
  6. wps表格怎么去掉数字最后的两位
  7. 用递归方式写斐布拉契数列的坏处
  8. 已知信码序列为1011_专升本计算机网络:校验码
  9. 论文阅读_基于GCN的知识图对齐
  10. 未来十年Python的前景会怎样?(知乎)