Django 千峰

Django 千锋培训读书笔记

https://www.cnblogs.com/fengbo1113/p/8547302.html
https://www.bilibili.com/video/av17879644/?p=1

切换到创建项目的目录  cd C:\Users\admin\Desktop\DjangoProject
创建名为project的项目命令  django-admin startproject project
            注:所有路径不要有中文
            切换到目录cd C:\Users\admin\Desktop\DjangoProject\project
目录层级说明:manage.py  一个命令行工具,可以让我们用多种方式对Django项目进行交互
             __init__.py 一个空文件,它告诉Python这个目录应该被看做一个包
             settings.py 项目的配置文件(主要处理文件)
             urls.py     项目的url声明 (主要处理文件)
             wsgi.py     项目与WSGI兼容的Web服务器入口
配置数据库   Django默认使用SQLite数据库
            在settings.py文件中通过DATABASES选项进行数据库配置
配置MySQL    Python3.x中安装的是PyMySQL
            在__init__.py文件中写入两行代码import pymysql
                                        pymysql.install_as_MySQLdb()
    以数据库sunck为例进行示范:对settings.py中的DATABASES进行设置
            DATABASES = {
                'default': {
                    'ENGINE': 'django.db.backends.mysql',
                    'NAME': "sunck",
                    'USER': "root",
                    'PASSWORD': "admin123",
                    'HOST': "localhost",
                    'PORT': "3306"
                }
            }
创建应用--在一个项目中可以创建多个应用,每个应用进行一种业务处理
        打开CMD,进入project(目录名)的目录下,输入命令创建名为myApp的app:
            python manage.py startapp myAPP
myAPP目录说明
    admin.py    进行站点配置
    models.py   创建模型
    views.py    创建视图
激活应用  在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',
    ]
定义模型 概述:有一个数据表就对应有一个模型
        在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)

                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,)
            说明:
                不需要定义主键,在生成时自动添加,并且值为自动增加
在数据库中生成数据表
    生成迁移文件
        执行 python manage.py makemigrations    在migrations目录下生成一个迁移文件,此时数据库中还没有生成数据表
    执行迁移
        执行 python manage.py migrate           相当于执行MySQL语句创建了数据表

测试数据操作
进入到python shell
    执行 python manage.py shell
引入包
    from myApp.models import Grades, Students
    from django.utils import timezone
    from datetime import *
查询所有数据
    类名.objects.all()
    示例: Grades.objects.all()
添加数据
    本质:创建一个模型类的对象实例
    示例:CMD窗口下:
        grade1 = Grades()
        grade1.gname = "python04"
        grade1.gdate = datetime(year=2017, month=7, day=17)
        grade1.ggirlnum = 3
        grade1.gboynum = 70
        grade1.save()
查看某个对象
    类名.objects(pk=索引号)
    示例:
        Grades.objects.get(pk=2)
        Grades.objects.all()
修改某个数据
    模型对象属性 = 新值
    示例:
        grade2.gboynum = 60
        grade2.save()
删除数据
    模型对象.delete()
    grade2.delete()
    注意:这是物理删除,数据库中的相应数据被永久删除
关联对象
    示例:
        stu = Students()
        stu.sname = "Xue Yanmei"
        stu.sgender = False
        stu.sage = 20
        stu.scontend = "I am Xue Yanmei"
        stu.sgrade = grade1
        stu.save()
    获得关联对象的集合
        需求:猎取python04班级的所有学生
             对象名.关联的类名小写_set.all()
             示例:grade1.students_set.all()
        需求:创建曾志伟,属于python04班级
            示例:
                stu3 = grade1.students_set.create(sname=u'Zhen Zhiwei',sgender=True,scontend=u"I am Zhen Zhiwei",sage=45)
            注意:这样创建的数据直接被添加到了数据库当中。
启动服务器:
    格式:python manage.py runserver ip:port
    注意:ip可以不写,不写代表本机ip
    端口号默认是8000
    python manage.py runserver
    说明:
        这是一个纯python编写的轻量级web服务器,仅仅在开发测试中使用这个
Admin站点管理:
    概述:
        内容发布:负责添加,修改,删除内容的
        公告访问
    配置Admin应用:
        在settings.py文件中的INSTALLED_APPS中添加'django.contrib.admin',
        这条默认是添加好的。
    创建管理员用户:
        在项目目录下执行 python manage.py createsuperuser
        依次输入账号名,邮箱,密码即可完成用户创建
    登陆:
        http://127.0.0.1:8000/admin/
    汉化:
        把project\settings.py
        中作如下设定:LANGUAGE_CODE = 'zh-Hans'
                     TIME_ZONE = 'Asia/Shanghai'
管理数据表:
    修改 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)
    自定义管理页面:
        属性说明
            # 列表页属性
            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
视图的基本使用
    概述:
        在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("Sunck is a good man")
    配置url:方法一:path方法:
        修改project目录下的urls.py文件:
            from django.contrib import admin
            from django.urls import path, include
            urlpatterns = [
                path('admin/', admin.site.urls),
                path('', include('myApp.urls')),
            ]
        在myApp应用目录下创建urls.py文件:
            from django.urls import path, include
            from . import views
            urlpatterns = [
                path('',views.index),
            ]
    配置url:方法二:url方法:
        修改project目录下的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),
            ]
模板的基本使用:
    概述:模板是HTML页面,可以根据视图中传递过来的数据进行填充
    创建模板:
        创建templates目录,在目录下创建对应项目的模板目录(project/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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值