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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章