涉及的知识点:
1.ORM框架的基本概念
2.Django数据库管理系统的基本使用
3.Django后台管理系统的基本使用
4.Django模板系统的基本使用
5.Django视图系统的基本使用
6.Django路由的基本使用
7.Django如何运行测试
8.Linux中如何创建虚拟环境
9.个人实战总结
下面,我分别进行总结:
1.ORM框架的基本概念:
ORM实际上可以看成是一种镜子,或者说一种sql代码的翻译机,能够将django中的sql语句翻译成数据库的语句
有了ORM以后,你只需要学会Django中如何定义数据和增删改查,而不用记其他的任何数据库知识,你就能够实现对数据库的操作,是一种非常强大的功能.
那么究竟怎么使用呢,我分别上截图和源码
所有的数据库都被映射成了Django中的一个特殊的类,这个类必须继承models.Modle
类的的属性是由models的属性来定义的
OK,上一下源码
from django.db import models
# Create your models here.
# 图书类
class BookInfo(models.Model):
"""图书模型类"""
# 图书名称
btitle = models.CharField(max_length=20)
# 出版日期
bpub_date = models.DateField()
def __str__(self):
return self.btitle
"""
英雄人物类
英雄名 hname
性别 hgender
年龄 hage
备注 hcomment
关系属性 book
"""
class HeroInfo(models.Model):
"""英雄人物模型类"""
# 英雄名称
hname = models.CharField(max_length=20)
# 性别,布尔值,默认男
hgender = models.BooleanField(default=False)
# 备注
hcomment = models.CharField(max_length=20)
# 关系属性
hbook = models.ForeignKey('BookInfo', on_delete=None)
def __str__(self):
return self.hname
2.Django数据库管理系统的基本使用
对于数据库的增删改查,需要创建模型类的实例
所有的操作方法和类的操作方法都一样
比如说
b=BookInfo()
b.btitle='天龙八部'
b.bpub_date=date(1999,1,1)
b.save()
这里的save()是提交数据保存的方法,直接存进数据库
如果要删除,直接使用delete()方法
在这里,有个比较简单的方法,那就是注册一个后台管理类,直接进后台使用图形化界面操作
这个由于是shell操作,所以没有截图也没有源码
3.Django后台管理系统的基本使用
django后台管理系统是django自带的管理系统,还是很实用的
废话不多说,直接上截图和源码,以及详细说明
没有错,所有的关于后台管理的操作,都写在admin这个模块中
要注册后台管理类,必须先导入你要管理的模型类
如果你要自定义管理类,必须继承admin.ModelAdmin这个模型类,然后固定格式写list_display=[你要后台显示的数据]
最后,你必须要注册,格式也很固定
admin.site.register(模型类,管理模型类) 管理模型类可以没有
ok,废话不多说,上源码,大家参考参考
from django.contrib import admin
# Register your models here.
"""
后台管理相关
本地化
修改settings
创建管理员
python manage.py createsuperuser
注册模型类
后台默认显示模型对象的字符串
通过重写 str 来改变
"""
from booktest.models import BookInfo, HeroInfo
# 自定义管理页面 控制后台的显示内容
class BookInfoAdmin(admin.ModelAdmin):
"""图书模型管理类"""
list_display = ['id', 'btitle', 'bpub_date']
class HeroInfoAdmin(admin.ModelAdmin):
"""英雄人物模型管理类"""
list_display = ['id', 'hname', 'hgender', 'hcomment']
# 注册
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)
4.Django模板系统的基本使用
django的模板本质也就是HTML文件,不过,他非常的有特色,如果你学过java就知道什么是jsp文件,学过PHP就知道什么是PHP文件,django的模板很神奇,它明明是以.html结尾的,可是也能够实现jsp,php这样的功能,比如看这个截图
没错,他能够写后台代码,能够实现遍历,循环,判断,传递变量等功能.的却是一个非常强大的模板功能,我是挺喜欢的,废话不多说,上源码供大家参考一下
显示图书信息.menu{
width: 694px;
height: 50px;
/*background-color: chocolate;*/
/*去掉小圆点*/
list-style: none;
/*特殊的div*/
margin: 50px auto 0;
padding: 0;
}
.menu li{
width: 98px;
height: 48px;
border: 1px solid gold;
background-color: white;
/*排成一行*/
/*display: inline-block;*/
float: left;
margin-left: -1px;
}
.menu li a{
/*background-color: gold;*/
display: block;
width: 98px;
height: 48px;
text-align: center;
line-height: 48px;
text-decoration: none;
font-size: 16px;
font-family: "Microsoft Yahei";
}
.menu li a:hover{
background-color: gold;
color: white;
}
图书信息如下
{% for book in books %}
{{ book.btitle }}{% endfor %}
{% for book in books %}
{{ book.btitle }}{% endfor %}
5.Django视图系统的基本使用
视图也就是django中的view,是控制显示的重要组成部分,几乎所有的视图逻辑都是写在view里面的,可以以函数的形式来定义,也可以以类的形式来定义,今天是第一个实战项目,还是以函数的形式来定义的
废话不多说,上截图和源码
视图函数有两个极其重要,必不可少的组成部分,一个是请求,一个是响应,请求一般是request的,是函数的第一个参数,响应一般是返回值,经常以render的形式来渲染返回.不过有时候会重定向,以及其他的,这种情况相对较少.
废话不多说,直接上源码供大家参考
from django.http import HttpResponse
from django.shortcuts import render
from booktest.models import BookInfo # 导入图书信息
# Create your views here.
"""
视图函数处理模块
可以传变量
可以写类似于编程语言的代码
创建模板文件夹
"""
# 定义视图函数 HttpRequest
def index(request):
# 进行处理,和M和T进行交互
# return HttpResponse('lxgzhw')
return render(request, 'index.html', {
'hello': '大鹏',
})
def index2(request):
# 进行处理,和M和T进行交互
return render(request, 'booktest/index2.html')
def index3(request):
# 进行处理,和M和T进行交互
return render(request, 'booktest/index3.html')
def detail(request, bid):
# 图书关联的英雄信息
book = BookInfo.objects.get(id=bid)
# 查询图书相关的英雄信息
heros = book.heroinfo_set.all()
return render(request, 'booktest/detail.html', {
'book': book,
'heros': heros,
})
def show_books(request):
# 显示图书的信息
"""
通过
:param request:
:return:
"""
books = BookInfo.objects.all()
# 使用模板
return render(request, 'booktest/show_books.html', {
'books': books,
})
6.Django路由的基本使用
路由并不复杂,路由器嘛,就是用来转发的,是视图和模板的对应关系,没有它是万万不能的,没有路由,框架就无法知晓我们定义的视图和模板的对应关系,无法完成渲染,就会报错.
废话不多说,直接上截图和源码
django1.*一般都是用url来做路由,django2.*一般都是用path和re_path来做路由,关于这两个有分不清的可以留言,我之前也弄了很久才明白.
路由其实比较简单,如果要实现路由分发就用include的,什么是路由分发呢,就是把请求转到子项目,当你的项目很庞大的时候,这是必备技术.
一般的路由,就是你定义什么视图,就写什么路由就写了,你定义的就是用户在浏览器输入的请求地址,底层原理是通过正则表达式来过滤的.
如果要提取参数,就用正则表达式的分组来实现.
ok,废话不多说,上源码
from django.conf.urls import url
from booktest import views
"""
严格匹配开头和结尾
"""
appname = 'booktest'
urlpatterns = [
# 通过url
url(r'^index$', views.index),
url(r'^index2$', views.index2),
url(r'^index3$', views.index3),
# 显示图书信息
url(r'^books$', views.show_books),
url(r'^books/(\d+)$', views.detail),
url(r'^$', views.index),
]
7.Django如何运行测试
运行很简单,把下面的命令复制过去,百试不爽
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
8.Linux中如何创建虚拟环境
创建虚拟环境一般是解决版本不同的问题,当然,虚拟环境相互独立,也是不污染主环境的重要解决方法,安装虚拟环境很简单,记住下面的命令
sudo pip install virtualenv
sudo pip install virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv -p python3 django1.1
进入虚拟环境
workon 名字
退出
deactivate
删除
rmvirtualenv 名字
9.个人实战总结
这个项目看起来是做图书项目,十分简单,没有涉及到前端的css和js这种重要的内容,也没用引入图片等静态资源,所以最终结果是网站十分简陋,惨不忍睹,不过我机智的最红还是美化了一下,整体效果还是很不错的,看一下最终的运行效果吧.