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})
 
 
--django根据models生成对应的脚本文件python manage.py sql [项目名称:t2cloud_auth]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/smartyy/p/9687985.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小鬼难缠--python小bug备忘

今天编译pyhon做人脸识别&#xff0c;遇到几个问题&#xff0c;做个记录吧。 编译报错&#xff1a; File "harrClassifier.py", line 17, in <module> flagscv2.CV_HAAR_SCALE_IMAGEAttributeError: module object has no attribute CV_HAAR_SCALE_IMAGE 定位根…

mysql for mac中文_mysql for Mac 下创建数据表中文显示为?的解决方法

在我的绝版Mac mini下安装了mysql 5.7版本&#xff0c;实例中&#xff0c;在通过load data 导入数据时发现表中的中文显示为 &#xff1f;通过百度&#xff0c;发现多个版本的解决方法&#xff0c;将其中一个成功解决的方法贴上来&#xff1a;大多方法都是这样&#xff1a;需要…

计算机科学计算方面分为,计算机方面的专业分为哪些类?【资讯与计算科学】和【电脑科学与技术专业】有什么不同?...

计算机方面的专业分为哪些类&#xff1f;【资讯与计算科学】和【电脑科学与技术专业】有什么不同&#xff1f;以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;计算机方面的专业分为哪些类&am…

Java异常处理教程(包含示例和最佳实践)

异常是可能在程序执行期间发生的错误事件&#xff0c;它会破坏其正常流程。 Java提供了一种健壮且面向对象的方式来处理异常情况&#xff0c;称为Java异常处理 。 我们将在本教程中研究以下主题。 Java异常处理概述 异常处理关键字 异常层次 有用的异常方法 Java 7自动资源…

GMTC 大前端时代前端监控的最佳实践

本文来自阿里云前端监控团队&#xff0c;转载请注明出处本文为2018年6月21日&#xff0c;在北京举办的GMTC(全球大前端技术大会)&#xff0c;下午性能与监控专场&#xff0c;由阿里云前端监控团队前端技术专家彭伟春带来的演讲稿&#xff0c;现场反馈效果非常好&#xff0c;地上…

mysql有子查询么_sql-带有子查询的mysql更新查询

谢谢&#xff0c;我不知道使用INNER JOIN进行更新。在原始查询中&#xff0c;错误是要命名子查询&#xff0c;该子查询必须返回一个值&#xff0c;因此不能使用别名。UPDATE CompetitionSET Competition.NumberOfTeams (SELECT count(*) -- no column aliasFROM PicksPointsWHE…

『性能测试』文章大汇总

为了方便阅读&#xff0c;我重新整理本文&#xff0c;将包含本博客所有与性能测试有关的内容。 ------------------------------------------- 近两年市面上的性能测试书籍很多了&#xff0c;但大部分书都在讲loadrunner的操作技巧项目与项目实践。我不认为有什么问题&#xff…

Alpha阶段敏捷冲刺②

1.提供当天站立式会议照片一张 每个人的工作 &#xff08;有work item 的ID&#xff09;&#xff0c;并将其记录在码云项目管理中&#xff1a; 昨天已完成的工作。 购买云服务器 注册账号 界面布局初步规划 今天计划完成的工作。 界面雏形设计 数据库初步设计 完成后端框架初步…

html iframe post,使用Jquery和IFrame的跨子域请求(GET,POST,…)

我正在尝试在我的主域(http://foo.com)和我的API(http://api.foo.com)之间开发请求.为了绕过关于跨子域内容的限制,我在主页(http foo.com/main.html)上使用iframe,指向iframe.html页面&#xff1a;scripts.api.foo.com.(scripts.api.foo.com和foo.com在同一台服务器上,api.foo…

透明地持久保存并从数据库中检索加密的数据

自从我在这里发表上一个帖子以来已经有两个多月了&#xff0c;但是今年六月和七月非常忙碌而密集。 首先&#xff0c; Confitura的组织&#xff08;欧洲最大的Java开发人员免费会议&#xff09;参加了我所有的免费晚会&#xff0c;然后在相当紧张的住院期间&#xff0c;我们的第…

[译] 2017 年比较 Angular、React、Vue 三剑客

原文地址&#xff1a;Angular vs. React vs. Vue: A 2017 comparison原文作者&#xff1a;Jens Neuhaus译文出自&#xff1a;掘金翻译计划本文永久链接&#xff1a;https://github.com/xitu/gold-miner/blob/master/TODO/angular-vs-react-vs-vue-a-2017-comparison.md译者&…

centos 离线安装mysql_CentOS6离线安装mysql-5.7.25

1.mysql-5.7.25-1.el6.x86_64.rpm-bundle.tar下载百度云资源提取码&#xff1a;ej1y2.把下载的mysql安装包上传到Centos上解压mysql&#xff0c;我这是在Windows上解压的上传到Centos上&#xff0c;我在Centos上解压mysql不知道为什么少了rpm -ivh mysql-community-common-5.7.…

Linux自动化之Cobbler补鞋匠安装

cobbler介绍&#xff1a; 快速网络安装linux操作系统的服务&#xff0c;支持众多的Linux发行版&#xff1a;Red Hat、 Fedora、CentOS、Debian、Ubuntu和SuSE&#xff0c;也可以支持网络安装windows PXE的二次封装&#xff0c;将多种安装参数封装到一个菜单 Python编…

html5中音频的标签,html5中的音频标签安全

有点.Grooveshark向正在流式传输的MP3的服务器端脚本发送POST请求,这使得很难在不自动创建POST请求的情况下访问和欺骗,特别是看到您将不得不尝试存储音频文件那是收集的.但是您可以使用新的AudioContext来帮助大多数现代平台解决这个问题我使用HTML5Rocks.com的一个很好的例子…

如何以10倍速加速Apache Xalan的XPath处理器

一段时间以来&#xff0c; Apache Xalan中存在一个令人尴尬的错误&#xff0c;该错误是XALANJ-2540 。 此错误的后果是Xalan每次XPath表达式求值将内部SPI配置文件加载数千次 &#xff0c;可以很容易地进行如下测量&#xff1a; 这个&#xff1a; Element e (Element)documen…

反射例子(配置文件)

配置文件 className fanshe.Student1 showInfo show1 类student1 public class Student1 {public Student1() {System.out.println("调用了Student1 无参构造函数");}public void show1(){System.out.println("调用了show1()方法");} } 测试类 public cl…

503 Next Greater Element II 下一个更大元素 II

给定一个循环数组&#xff08;最后一个元素的下一个元素是数组的第一个元素&#xff09;&#xff0c;输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数&#xff0c;这意味着你应该循环地搜索它的下一个更…

mysql update nowait_mysql innodb之select for update nowait

作者: 弦乐之花 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明mysql innodb之select for update nowait习惯了oracle数据库的select for update nowait的同学&#xff0c;如果转在mysql环境开发的话&#xff0c;也许会不太适应——目前builtin版本的inn…

使用ant design Pro开发项目的小结

一、关于上手。 1. 关于ant design Pro的介绍&#xff0c;自己看官网&#xff0c;大致上可以理解为ant design&#xff08;组件库&#xff09; ant design Pro &#xff08;完整的项目&#xff09; dva&#xff08;路由 数据流管理&#xff09;的组合拳。总之这个Pro是一个已经…

Activiti中的高级脚本:自定义配置注入

脚本任务可能是Activiti代码库中“最古老的”类之一&#xff0c;但我认为它仍然未被许多人使用。 &#xff08;可以理解的&#xff1f;&#xff09;缺点当然是性能&#xff08;解释还是编译&#xff09;&#xff0c;并且从IDE角度来看支持较少。 但是&#xff0c;好处&#xf…