zoukankan      html  css  js  c++  java
  • django框架简介

    -------------------MVC与MVT框架-------------------
    1、MVC
    MVC框架的核心思想是:解耦。降低各功能模块之间的耦合性,方便将来变化时,更容易重构代码,最大程度上实现代码的重用。m表示model,重要用于对数据层的封装;v表示view,用于向用户展示结果;c表示controller,是核心,用于处理请求、获取数据、返回结果。
    2、MVT
    Django是一款分层框架,用于使用python进行web开发,与MVC所不同,属于MVT框架。m表示model,负责与数据库交互,v表示view,是核心,负责接收请求、获取数据、返回结果;t表示template,负责呈现内容到流程器。


    -------------------环境搭建-------------------
    1、Linux下创建虚拟环境
    1、mkvirtualenv [虚拟环境名称]:创建
    2、rmvirtualenv [虚拟环境名称]:删除
    3、workon:查看当前虚拟环境list
    4、workon [虚拟环境名称]:进入对应的虚拟环境
    5、deactivate:退出
    6、所有的虚拟环境都位于/home/.virtualenvs目录下
    7、pip list/pip freeze:查看当前虚拟环境中所安装的包

    2、安装django
    1、建议安装1.8.2版本:
    2、安装指令:
    pip install django==1.8.2
    3、查看安装版本
    import django
    django.get_version()

    3、创建项目
    1、创建指令:
    django-admin startproject [项目名称]
    2、目录中文件的说明

    4、目录说明
    1、manage.py:一个命令行工具,可以使你用多种方式对django项目进行交换
    2、内置的目录:项目的真正的python包
    3、__init__.py:一个空文件,它告诉python这个目录应该被看做一个python包
    4、setting.py:项目的配置
    5、urls.py:项目的URL声明
    6、wsgi.py:项目与WSGI兼容的web服务器入口


    -------------------定义模型-------------------
    1、数据库配置
    1、在setting.py文件中,通过DATABASES项进行数据库设置。
    2、django支持的数据库包括:sqlite、mysql等主流数据库。
    3、Django默认使用SQLite数据库。

    2、创建应用
    1、创建应用的命令
    python manage.py startapp [应用的名称]。

    2、定义模型类
    1、有一个数据表,就有一个模型类与之对应。
    2、打开models.py文件,定义模型类。
    3、引入包from django.db import models。
    4、模型类继承自models.Model类。
    5、说明:不需要定义主键列,在生成时会自动添加,并且值为自增长。
    6、当输出对象时,会调用对象的str方法。

    3、生成数据表
    1、激活模型:
    编辑setting.py文件,将[引用的名称]加入到installed_apps中
    2、生成迁移文件:
    python manage.py makemigrations
    3、迁移文件被生成到migrations目录中
    4、执行迁移:
    python manage.py migrate

    4、测试数据操作
    1、进入python shell 中:
    python manage.py shell
    2、引入对应的包
    1、from [应用的名称].models import [模块的名称]
    2、from django.utils import timezone
    3、from datetime import *
    3、对应的测试指令
    1、[模块的名称].objects.all():数据的查询
    2、[模块的名称].objects.get(pk=1):指定主键条件进行查询
    3、model = [模块的名称]():创建一个对象
    4、model.save():进程对应数据向数据库的存储
    5、model.delete():删除这条数据
    6、model.heroinfo_set.all():获取到指定对象所关联的HeroInfo表中的信息


    -------------------使用后台进行数据库的管理-------------------
    1、服务器
    1、开启服务器指令
    python manage.py runserver

    2、服务器默认端口8000,修改服务器端口为8080
    python manage.py runserver 8080

    3、注意
    1、修改文件不需要重启服务器,增加、删除文件需要重启服务器
    2、ctrl+c停止服务器

    2、管理操作
    1、使用django的管理:
    1、创建一个管理员用户
    python manage.py createsuperuser
    2、浏览器连接后台:
    通过127.0.0.1:8000/admin;进行对后台管理界面的访问。
    3、进入管理站点,默认可以对group、users进行管理

    2、管理界面本地化:
    1、编辑settings.py文件,设置编码、时区
    2、编码:
    LANGUAGE_CODE = 'zh-Hans'
    3、时区:
    TIME_ZONE = 'Asia/Shanghai'

    3、向admin注册[应用的名称]的模型
    1、from django.contrib import admin
    2、from models import BootInfo:引用模块中的对应数据表包
    3、admin.site.register(BookInfo):进行指定数据的注册操作

    4、自定义管理界面
    class QuestionAdmin(admin.ModelAdmin):
    list_display = ['pk','btitle','bpub_date']
    admin.site.register(Question,QuestionAdmin)

    2、列表页属性:
    1、list_display:显示字段,可以点击列头进行排序
    list_display = ['pk','btitle','bpub_date']
    2、list_filter:过滤字段,过滤框会出现在右侧
    list_filter = ['btitle']
    3、search_fields:搜索字段,搜索框会出现在上侧
    search_fields = ['bible']
    4、list_per_page:分页,分页框会出现在下侧
    list_per_page = 10
    3、添加、修改也属性
    1、field:属性的先后顺序
    field = ['bpub_date','btitle']
    2、fieldsets:属性分组
    fieldsets = [
    ('basic',{'fields':['btitle']}),
    ('more',{'fields':['bpub_date']})
    ]

    5、关联对象
    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)

    6、布尔值的显示
    def sex():
    if self.hsex:
    return '男'
    else :
    return '女'
    sex.short_description = '性别'

    class HeroInfoAdmin(admin.ModelAdmin):
    list_display = ['id','hname','sex','hcontent']


    -------------------视图-------------------
    1、设置views.py
    from django import HttpResponse

    def index(requset):
    return HttpResponse('index')

    def detail(requset):
    return HttpResponse('detail')

    2、配置URLconf
    1、URLconf包含正则表达式和视图两部分
    2、进行test1中url的编写
    url(r'^',include('booktest.urls'))
    3、在booktest中进行urls的编写操作
    from django.conf.urls import url
    from . import views
    urlpatters = [
    url(r'^',view.index),
    url(r'^([0-9]+)/$',view.detail),
    ]


    -------------------模板-------------------
    1、模板文件夹创建
    1、创建对应存放模板的文件夹
    mkdir templates/booktest/index.html
    2、修改setting.py文件,设置TEMPLATES的DIRS值
    'DIRS':[os.path.jion(BASE_DIR,'templates')],

    2、创建模板
    1、在模板中访问试图传递的数据
    {{输出值,可以是变量,也可以是对象.属性}}
    {%执行代码%}

    3、使用模板
    1、编辑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))

    4、去除模板的硬编码
    1、修改test1/urls.py文件,在include中设置namespace
    url(r'^admin/',include(admin.site.urls,namespace='booktest')),
    2、修改booktest/urls.py文件,设置name
    url(r'^book/([0-9]+)/$',views.detail,name='detail')
    3、修改index.html模板中的链接
    <a herf ="{% url 'booktest:detail' book.id%}">


    5、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})

  • 相关阅读:
    买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
    asp.net cookie and session
    leelazero and google colab
    download file by python in google colab
    physical processor, core, logical processor
    通过powershell操作eventlog
    openxml in sql server
    get the page name from url
    How to Execute Page_Load() in Page's Base Class?
    Difference between HttpContext.Request and Request
  • 原文地址:https://www.cnblogs.com/qingtianyu2015/p/6064066.html
Copyright © 2011-2022 走看看