-------------------MVC与MVT框架-------------------
一、MVC
MVC框架的核心思想是:解耦。下降各功能模块之间的耦合性,方便未来变化时,更容易重构代码,最大程度上实现代码的重用。m表示model,重要用于对数据层的封装;v表示view,用于向用户展现结果;c表示controller,是核心,用于处理请求、获取数据、返回结果。
二、MVT
Django是一款分层框架,用于使用python进行web开发,与MVC所不一样,属于MVT框架。m表示model,负责与数据库交互,v表示view,是核心,负责接收请求、获取数据、返回结果;t表示template,负责呈现内容到流程器。html
-------------------环境搭建-------------------
一、Linux下建立虚拟环境
一、mkvirtualenv [虚拟环境名称]:建立
二、rmvirtualenv [虚拟环境名称]:删除
三、workon:查看当前虚拟环境list
四、workon [虚拟环境名称]:进入对应的虚拟环境
五、deactivate:退出
六、全部的虚拟环境都位于/home/.virtualenvs目录下
七、pip list/pip freeze:查看当前虚拟环境中所安装的包python
二、安装django
一、建议安装1.8.2版本:
二、安装指令:
pip install django==1.8.2
三、查看安装版本
import django
django.get_version()mysql
三、建立项目
一、建立指令:
django-admin startproject [项目名称]
二、目录中文件的说明web
四、目录说明
一、manage.py:一个命令行工具,可使你用多种方式对django项目进行交换
二、内置的目录:项目的真正的python包
三、init.py:一个空文件,它告诉python这个目录应该被看作一个python包
四、setting.py:项目的配置
五、urls.py:项目的URL声明
六、wsgi.py:项目与WSGI兼容的web服务器入口正则表达式
-------------------定义模型-------------------
一、数据库配置
一、在setting.py文件中,经过DATABASES项进行数据库设置。
二、django支持的数据库包括:sqlite、mysql等主流数据库。
三、Django默认使用SQLite数据库。sql
二、建立应用
一、建立应用的命令
python manage.py startapp [应用的名称]。shell
二、定义模型类
一、有一个数据表,就有一个模型类与之对应。
二、打开models.py文件,定义模型类。
三、引入包from django.db import models。
四、模型类继承自models.Model类。
五、说明:不须要定义主键列,在生成时会自动添加,而且值为自增加。
六、当输出对象时,会调用对象的str方法。数据库
三、生成数据表
一、激活模型:
编辑setting.py文件,将[引用的名称]加入到installed_apps中
二、生成迁移文件:
python manage.py makemigrations
三、迁移文件被生成到migrations目录中
四、执行迁移:
python manage.py migratedjango
四、测试数据操做
一、进入python shell 中:
python manage.py shell
二、引入对应的包
一、from [应用的名称].models import [模块的名称]
二、from django.utils import timezone
三、from datetime import *
三、对应的测试指令
一、[模块的名称].objects.all():数据的查询
二、[模块的名称].objects.get(pk=1):指定主键条件进行查询
三、model = [模块的名称]():建立一个对象
四、model.save():进程对应数据向数据库的存储
五、model.delete():删除这条数据
六、model.heroinfo_set.all():获取到指定对象所关联的HeroInfo表中的信息浏览器
-------------------使用后台进行数据库的管理-------------------
一、服务器
一、开启服务器指令
python manage.py runserver
二、服务器默认端口8000,修改服务器端口为8080
python manage.py runserver 8080
三、注意
一、修改文件不须要重启服务器,增长、删除文件须要重启服务器
二、ctrl+c中止服务器
二、管理操做
一、使用django的管理:
一、建立一个管理员用户
python manage.py createsuperuser
二、浏览器链接后台:
经过127.0.0.1:8000/admin;进行对后台管理界面的访问。
三、进入管理站点,默承认以对group、users进行管理
二、管理界面本地化:
一、编辑settings.py文件,设置编码、时区
二、编码:
LANGUAGE_CODE = 'zh-Hans'
三、时区:
TIME_ZONE = 'Asia/Shanghai'
三、向admin注册[应用的名称]的模型
一、from django.contrib import admin
二、from models import BootInfo:引用模块中的对应数据表包
三、admin.site.register(BookInfo):进行指定数据的注册操做
四、自定义管理界面
class QuestionAdmin(admin.ModelAdmin):
list_display = ['pk','btitle','bpub_date']
admin.site.register(Question,QuestionAdmin)
二、列表页属性:
一、list_display:显示字段,能够点击列头进行排序
list_display = ['pk','btitle','bpub_date']
二、list_filter:过滤字段,过滤框会出如今右侧
list_filter = ['btitle']
三、search_fields:搜索字段,搜索框会出如今上侧
search_fields = ['bible']
四、list_per_page:分页,分页框会出如今下侧
list_per_page = 10
三、添加、修改也属性
一、field:属性的前后顺序
field = ['bpub_date','btitle']
二、fieldsets:属性分组
fieldsets = [
('basic',{'fields':['btitle']}),
('more',{'fields':['bpub_date']})
]
五、关联对象
from django.contrib import admin
from models import BookInfo,HeroInfo
class HeroInfoline(admin.StackedInline/admin.TabularInline):
model = HeroInfo
extra = 2
class BookInfoAdmin(admin.ModelAdmin):
inlines = [HeroInfoInline]
admin.site.register(BookInfo,BookInfoAdmin)
六、布尔值的显示
def sex():
if self.hsex:
return '男'
else :
return '女'
sex.short_description = '性别'
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id','hname','sex','hcontent']
-------------------视图-------------------
一、设置views.py
from django import HttpResponse
def index(requset):
return HttpResponse('index')
def detail(requset):
return HttpResponse('detail')
二、配置URLconf
一、URLconf包含正则表达式和视图两部分
二、进行test1中url的编写
url(r'^',include('booktest.urls'))
三、在booktest中进行urls的编写操做
from django.conf.urls import url
from . import views
urlpatters = [
url(r'^',view.index),
url(r'^([0-9]+)/$',view.detail),
]
-------------------模板-------------------
一、模板文件夹建立
一、建立对应存放模板的文件夹
mkdir templates/booktest/index.html
二、修改setting.py文件,设置TEMPLATES的DIRS值
'DIRS':[os.path.jion(BASE_DIR,'templates')],
二、建立模板
一、在模板中访问试图传递的数据
{{输出值,能够是变量,也能够是对象.属性}}
{%执行代码%}
三、使用模板
一、编辑views.py文件,在方法中调用模板
from django.http import HttpResponse
from django.template import RequestContext,loader
from models import BookInfo
def index(request):
booklist = BookInfo.objects.all()
template = loader.get_template('booktest/index.html')
context = RequestContext(request,{'booklist':booklist})
return HttpResponse(template.render(context))
四、去除模板的硬编码
一、修改test1/urls.py文件,在include中设置namespace
url(r'^admin/',include(admin.site.urls,namespace='booktest')),
二、修改booktest/urls.py文件,设置name
url(r'^book/([0-9]+)/$',views.detail,name='detail')
三、修改index.html模板中的连接
<a herf ="{% url 'booktest:detail' book.id%}">
五、Render简写
from django.shortcuts import render
from models import BookInfo
def index(reqeust):booklist = BookInfo.objects.all()return render(reqeust,'booktest/index.html',{'booklist':booklist})