Django1.11.4 版本支持Python3.5 3.6

1.Django安装
pip install django==1.11.4

2.验证是否安装成本

python

import django
django.get_version()

3.创建项目

a. 在合适位置创建一个目录django_pratice

b. 打开cmd,进入创建的django_pratice目录下

c. django-admin startproject django_demo(项目名)

d. cmd下输入tree . /f查看目录层级

manage.py      一个命令行工具,可以让我们用多种方式对Django项目进行交互
 __init__.py     一个空文件,它告诉Python这个目录应该被看做一个包
settings.py     项目的配置文件(主要处理文件)
urls.py         项目的url声明 (主要处理文件)
wsgi.py         项目与WSGI兼容的Web服务器入口

4. 基本操作

a.设计表结构

班级表结构: 表名1----grades  字段---班级名称(gname)、成立时间(gdate)、女生总数(ggirlnum)、男生总数(gboynum)、是否删除(isDelete)
学生表结构:  表名2----students 字段---学生姓名(sname)、学生性别(sgender)、学生年龄(sage)、学生简介(scontend)、学生班级(sgrade)、是否删除(isDelete)

b.配置数据库(Django默认使用SQLite数据库)

在settings.py文件中通过DATABASES选项进行数据库配置(先决条件:配置MySQL且Python3.x中安装的是PyMySQL)

在__init__.py文件中写入两行代码
        import pymysql
                pymysql.install_as_MySQLdb()
创建数据库django_demo
        create database django_demo(数据库名)
以数据库django_demo为例进行示范:对settings.py中的DATABASES进行设置
            DATABASES = {
                'default': {
                    'ENGINE': 'django.db.backends.mysql',
                    'NAME': "django_demo",
                    'USER': "root",
                    'PASSWORD': "123456",
                    'HOST': "localhost",
                    'PORT': "3306"
                }
            }
c. 创建应用------在一个项目中可以创建多个应用,每个应用进行一种业务处理
         
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录,输入命令创建名为myApp的app:
        python manage.py startapp myAPP(应用名)

myAPP目录说明:
    admin.py    进行站点配置
    models.py   创建模型
    views.py    创建视图

d. 激活应用
在settings.py文件中,将myApp应用加入到INSTALLED_APPS选项中
INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'myAPP',
    ]
e. 定义模型(有一个数据表就对应有一个模型,在models.py文件中定义模型)
引入:from django.db import models,模型类要继承models.Model类

示例:
                class Grades(models.Model):
                    gname = models.CharField(max_length=20)
                    gdate = models.DateTimeField()
                    ggirlnum = models.IntegerField()
                    gboynum = models.IntegerField()
                    isDelete = models.BooleanField(default=False)
            def __str__(self):
                    return "%s--%d--%d" % (self.gname, self.ggirlnum, self.gboynum)
                class Students(models.Model):
                    sname = models.CharField(max_length=20)
                    sgender = models.BooleanField(default=True)
                    sage = models.IntegerField()
                    scontend = models.CharField(max_length=20)
                    isDelete = models.BooleanField(default=False)
                    sgrade = models.ForeignKey("Grades", on_delete=models.CASCADE,) # 不需要定义主键,在生成时自动添加,并且值为自动增加
f. 在数据库中生成数据表
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录
生成迁移文件: 执行 python manage.py makemigrations    在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表
执行迁移: 执行 python manage.py migrate           相当于执行MySQL语句创建了数据表  select * from myapp_students;   desc myapp_students;

g. 测试数据操作

打开cmd,进入django_demo目录下的django_demo(项目目录)的目录,输入 python manage.py shell
引入包
        from myAPP.models import Grades, Students
            from django.utils import timezone
            from datetime import *
查询所有数据    类名.objects.all()   示例: Grades.objects.all()
添加数据(本质:创建一个模型类的对象实例即创建一个数据表,类中的属性对于表中的字段)    
         grade1 = Grades()
             grade1.gname = "python01"
             grade1.gdate = datetime(year=2017, month=7, day=17)
             grade1.ggirlnum = 3
             grade1.gboynum = 70
             grade1.save()    
查看某个对象     类名.objects.get(pk=索引号)  示例:Grades.objects.get(pk=2)
修改某个数据     模型对象属性 = 新值      示例:grade2.gboynum = 60   grade2.save()
删除数据         模型对象.delete()        示例:grade2.delete()
(注意:这是物理删除,数据库中的相应数据被永久删除)

关联对象

示例:
        stu = Students()
        stu.sname = "curry"
        stu.sgender = False
        stu.sage = 20
        stu.scontend = "I am curry"
        stu.sgrade = grade1
        stu.save()
获得关联对象的集合
    需求:猎取python04班级的所有学生   
    对象名.关联的类名小写_set.all()   示例:grade1.students_set.all()
    
    需求:创建曾志伟,属于python04班级
     示例:
stu3 = grade1.students_set.create(sname=u'曾志伟',sgender=True,scontend=u"我叫曾志伟",sage=45)( 注意:汉字要转码,这样创建的数据直接被添加到了数据库当中。)

h. 启动服务器
打开cmd,进入django_demo目录下的django_demo(项目目录)的目录
        格式:python manage.py runserver ip:port(注意:ip可以不写,不写代表本机ip,端口号默认是8000)  示例:python manage.py runserver

说明:这是一个纯python编写的轻量级web服务器,仅仅在开发测试中使用这个

i. Admin站点管理

概述:内容发布----负责添加,修改,删除内容;公告访问-----xxx
        
配置Admin应用: 在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin',这条默认是添加好的。
创建管理员用户:

新开cmd,在项目目录下执行 python manage.py createsuperuser依次输入账号名,邮箱,密码即可完成用户创建   
登陆:
    http://127.0.0.1:8000/admin/
汉化:
    把django_demo目录下的settings.py中作如下设定:LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'
    再重启web服务---python manage.py runserver

管理数据表:
        修改 myAPP\admin.py 如下:
            from django.contrib import admin
                   # Register your models here.
                from .models import Grades, Students
                # 注册
                admin.site.register(Grades)
                admin.site.register(Students)
        
        自定义管理页面:-------------在admin.py文件下写一个类

属性说明:
                        # 列表页属性
                        list_display = [] # 显示字段设置
                        list_filter = [] # 过滤字段设置
                        search_fields = [] # 搜索字段设置
                        list_per_page = [] # 分页设置
                        # 添加,修改页属性
                        fields = []        # 规定属性的先后顺序
                        fieldsets = [] # 给属性分组 (注意:fields与fieldsets不能同时使用)
            
            属性示例:
                # 列表页属性
                        list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum', 'isDelete']显示字段
                        list_filter = ['gname']  
                        search_fields = ['gname']
                        list_per_page = 5   
                        # 添加,修改页属性
                        #fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete']
                        fieldsets = [
                                ("num",{"fields":['ggirlnum', 'gboynum']}),
                                ("base", {"fields":["gname", "gdate", "isDelete"]}),
                        ]
            关联对象:需求:在创建一个班级时可以直接添加几个学生
                class StudentsInfo(admin.TabularInline):# 可选参数admin.StackedInline
                            model = Students
                            extra = 2
                        class GradesAdmin(admin.ModelAdmin):
                            inlines = [StudentsInfo]
             布尔值显示问题示例:
                class StudentsAdmin(admin.ModelAdmin):
                            def gender(self):
                                    if self.sgender:
                                    return "男"
                                    else:
                                    return "女"
                    # 设置页面列的名称
                            gender.short_description = "性别"
                            list_display = ['pk', 'sname', 'sage', gender,
                                                'scontend', 'sgrade', 'isDelete']
                            list_per_page = 10
                            admin.site.register(Students, StudentsAdmin)
             执行按钮位置:
                        class StudentsAdmin(admin.ModelAdmin):
                                ...snip...
                            actions_on_top = False
                            actions_on_bottom = True
                            admin.site.register(Students, StudentsAdmin)
             使用装饰器完成注册:
                            @admin.register(Students)
                            class StudentsAdmin(admin.ModelAdmin):
                                    def gender(self):
                                        ...snip...
                                        actions_on_top = False
                                        actions_on_bottom = True
j. 视图的基本使用

概述:在Django中,视图是对web请求进行回应,视图就是一个python函数,在views.py文件中定义。

定义视图:示例:在myApp\views.py中写入

from django.shortcuts import render
            # Create your views here.
            from django.http import HttpResponse
            def index(request):
                return HttpResponse("Curry is a good man")
配置url:
    方法:url方法
         修改django_demo目录下的urls.py文件:
            from django.contrib import admin
            from django.conf.urls import url,include

urlpatterns = [
                url(r'^admin/', admin.site.urls),
                url(r'^', include('myAPP.urls')),
            ]
            在myAPP应用目录下创建urls.py文件:
            from django.conf.urls import url
            from . import views

urlpatterns = [
                url(r'^$', views.index),
            ]
k. 模板的基本使用

概述:模板是HTML页面,可以根据视图中传递过来的数据进行填充

创建模板:
           创建templates目录,在目录下创建对应项目的模板目录(django_demo/templates/myAPP)

配置模板路径:

修改settings.py文件下的TEMPLATES下的'DIRS'为'DIRS': [os.path.join(BASE_DIR, 'templates')],

定义grades.html与students.html模板:

在templates\myAPP\目录下创建grades.html与students.html模板文件
        模板语法:
                    {{输出值,可以是变量,也可以是对象,属性}}
                    {%执行代码段%}
         http://127.0.0.1:8000/grades

写grades.html模板:
            <!doctype html>
            <html lang="en">
            <head>
                <meta charset="UTF-8">
                <meta name="viewport"
                      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
                <meta http-equiv="X-UA-Compatible" content="ie=edge">
                <title>班级信息</title>
            </head>
            <body>
                <h1>班级信息列表</h1>
                <ul>
                    <!--[python04, python05, python06]-->
                    {%for grade in grades%}
                    <li>
                        <a href="#">{{grade.gname}}</a>
                    </li>
                    {%endfor%}
                </ul>
            </body>
            </html>

Django web框架学习笔记相关推荐

  1. Django Web框架教学笔记-1

    <Django Web框架教学笔记> 目录 文章目录 <Django Web框架教学笔记> 目录 Django框架的介绍 Django的安装 Django框架开发 创建项目的指 ...

  2. Django web框架学习之旅(4)

    <Django Web 框架> 目录 Django shell的使用 admin 后台数据库管理 自定义后台管理数据表 修改后台Models的展现形式 模型管理器类 数据库表管理 数据表关 ...

  3. Django web 框架学习之旅(3)

    <Django Web 框架> 目录 静态文件 Django中的应用 - app 什么是应用(app) 创建应用app Django应用的结构组成 数据库 和 模型 Django下使用my ...

  4. Django Web开发学习笔记(4)

    第四章 模板篇 上一章的内容,我们将HTML的代码和Python代码都混合在了在view.py的文件下.但是这样做的坏处无疑是明显的,引用DjangoBook的说法: 对页面设计进行的任何改变都必须对 ...

  5. Django企业开发实战 高效Python Web框架指南 笔记 (一)

    Django企业开发实战 高效Python Web框架指南 笔记 (一) 内容: 作者是 the5fire,他的博客地址:https://www.the5fire.com/957.html 2016年 ...

  6. SpringMVC框架--学习笔记(下)

    接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...

  7. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  8. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  9. JeeSite 框架学习笔记

    JeeSite 框架学习笔记 目录 JeeSite 框架学习笔记 一.全局配置 1. 获取 Resource资源实际路径 DefaultResourceLoader 2. 配置前端 js css 二. ...

最新文章

  1. java上传ftp数据丢失_Java:将文件上传到FTP问题(数据包丢失) - java
  2. Python3 os模块应用
  3. SpringBoot从入门到实战只需一篇文章
  4. 更改应用程序图标_【iOS12人机交互指南】6.2-应用图标
  5. Windows 10 常用的快捷键及常用指令
  6. C++ 常用基础概念
  7. 计算机科学中抽象的作用,抽象释义
  8. 关于RecyclerView条目复用
  9. bzoj2456: mode
  10. 拔染印花的主要特点和工艺技术
  11. office 打开wps乱_word打开wps是乱码怎么办
  12. 开放源代码不得不知的一些事情
  13. Win7 Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足
  14. UDP打洞原理与N2N内网穿透
  15. 房地产业务学习(04)-房企信息化:谁忽悠了谁?
  16. 计算机蓝牙快捷键,电脑蓝牙在哪里开?蓝牙快捷方式介绍
  17. 用于服务器的芯片 i7,上海云服务器i7
  18. bios找不到硬盘模式选项如何解决?
  19. 团员大会如何写组织学习计算机知识,团支部召开接收新团员的支部大会的会议记录怎么写?...
  20. 最#全#的#海#淘#网#址#大#全

热门文章

  1. 利用Flutter写一个跨平台的果核APP(4)——数据存储
  2. 10个你必须知道的jQueryMobile代码片段(转)
  3. Javascript--键盘事件的组合使用
  4. 修改模拟器的IMEI号
  5. Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
  6. 百亿数据,毫秒级返回,如何构建?
  7. 年薪80万技术专家,面试通过后,被发现简历造假!合并8年前多段工作!惨遭警告和淘汰!...
  8. 美团(Leaf)分布式ID生成器,好用的一批!
  9. RocketMQ 一行代码造成大量消息丢失
  10. 妥~阿里程序员常用的 15 款开发者工具