摘要:簡(jiǎn)介是一個(gè)開(kāi)放源代碼的應(yīng)用框架,由寫(xiě)成,初次發(fā)布于年月,并于年月發(fā)布了第一個(gè)正式版本是一種軟件設(shè)計(jì)典范,核心思想是解耦優(yōu)點(diǎn)降低各功能模塊之間的耦合性,方便變更,更容易重構(gòu)代碼,最大程度上實(shí)現(xiàn)了代碼重用圖解模型是應(yīng)用程序中用于處理程序邏輯的部
Django簡(jiǎn)介
Django是一個(gè)開(kāi)放源代碼的Web應(yīng)用框架,由python寫(xiě)成,初次發(fā)布于2005年7月,并于2008年9月發(fā)布了第一個(gè)正式版本1.0
MVC:MVC是一種軟件設(shè)計(jì)典范,核心思想是解耦
MVC優(yōu)點(diǎn):降低各功能模塊之間的耦合性,方便變更,更容易重構(gòu)代碼,最大程度上實(shí)現(xiàn)了代碼重用
MVC 圖解Model(模型):是應(yīng)用程序中用于處理程序邏輯的部分,負(fù)責(zé)數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)
View(視圖):是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的
Controller(控制器):是應(yīng)用程序中處理用戶交互的部分,通常控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)
Django的MTV本質(zhì)與MVC模式?jīng)]有區(qū)別,只是定義形式不同
Model(模型):負(fù)責(zé)業(yè)務(wù)對(duì)象與數(shù)據(jù)庫(kù)的對(duì)象(ORM)
Template(模板):負(fù)責(zé)如何把頁(yè)面展示給用戶
View(視圖):負(fù)責(zé)業(yè)務(wù)邏輯,并在適當(dāng)?shù)臅r(shí)候調(diào)用Model和Template
MTV圖解 創(chuàng)建工程# 黑屏終端,進(jìn)入指定目錄 創(chuàng)建工程 django-admin startproject project基本操作 數(shù)據(jù)庫(kù)配置
Django默認(rèn)使用SQLite數(shù)據(jù)庫(kù),如果需要使用如mysql等數(shù)據(jù)庫(kù)需要在setting.py文件中配置
配置SQL在__init__.py文件中增加代碼(py2.x無(wú)需操作)
# __init__.py import pymysql pymysql.install_as_MySQLdb()
# settings.py DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "py03", "USER":"root", "PASSWORD":"123456", "HOST":"localhost", "PORT":"3306", } } ------- DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "數(shù)據(jù)庫(kù)名稱", "USER": "用戶名", "PASSWORD": "密碼", "HOST": "數(shù)據(jù)庫(kù)服務(wù)器ip", "PORT": "端口號(hào)", } }創(chuàng)建應(yīng)用
在一個(gè)工程中可以創(chuàng)建一個(gè)到多個(gè)應(yīng)用,每個(gè)應(yīng)用處理一種業(yè)務(wù)邏輯
打開(kāi)黑屏終端進(jìn)入工程目錄下 python manage.py startapp myApp
目錄結(jié)構(gòu):
├── db.sqlite3 # 數(shù)據(jù)庫(kù) ├── myApp # 一個(gè)應(yīng)用 │?? ├── admin.py # 管理 │?? ├── apps.py # 應(yīng)用的配置 │?? ├── __init__.py │?? ├── migrations # model到數(shù)據(jù)庫(kù)映射的中間文件 │?? │?? └── __init__.py │?? ├── models.py # model │?? ├── tests.py # 在這里可以寫(xiě)測(cè)試代碼 │?? └── views.py # 視圖 ├── project # 創(chuàng)建項(xiàng)目時(shí)創(chuàng)建的目錄 │?? ├── __init__.py │?? ├── settings.py # 項(xiàng)目的配置文件 │?? ├── urls.py # 根路由 │?? └── wsgi.py └── manage.py
# setting.py INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "myApp", ]啟動(dòng)服務(wù)
python manage.py runserver ip:port
ip可以不寫(xiě) python manage.py runserver
端口默認(rèn)8000,可以多帶帶修改 python manage.py runserver port
定義模型modeles.py
from django.db import models # Create your models here. class Grade(models.Model): name = models.CharField(max_length=20) boyNum = models.IntegerField() girlNum = models.IntegerField() isDelete = models.BooleanField(default=False) def __str__(self): return self.name class Student(models.Model): name = models.CharField(max_length=20) sex = models.BooleanField() age = models.IntegerField() content = models.CharField(max_length=40) # 關(guān)聯(lián)類名的小寫(xiě)加引號(hào)或者直接類名 grade = models.ForeignKey("grade") isDelete = models.BooleanField(default=False) def __str__(self): return self.name
說(shuō)明:不需要定義主鍵列,在生成時(shí)會(huì)自動(dòng)添加,并且值為自動(dòng)增長(zhǎng)
生成數(shù)據(jù)表生成遷移文件:python manage.py makemigrations
作用: 在應(yīng)用目錄下的migrations目錄下成遷移文件
查看建表語(yǔ)句: python manage.py sqlmigrate APP名字 0001
說(shuō)明:0001為makemigrations之后產(chǎn)生了0001_initial.py文件
執(zhí)行遷移: python manage.py migrate
作用:相當(dāng)于執(zhí)行sql語(yǔ)句生成數(shù)據(jù)表,表名為 應(yīng)用名全小寫(xiě)_類名全小寫(xiě)
# 進(jìn)入pyhton shell模式 python manage.py shell # 引入包 from myApp.models import Grade,Student # 增 >>> grade = Grade() >>> grade.name = "python01" >>> grade.boyNum = 50 >>> grade.girlNum = 10 >>> grade.save() >>> stu = Student() >>> stu.name = "sunck" >>> stu.sex = "True" >>> stu.age = 18 >>> stu.contend = "sunck is a good man" >>> stu.grade = grade >>> stu.save() # 刪 stu.delete() # 改 >>> stu.age = 17 >>> stu.save() # 查 stus = Student.objects.all() grade = Grade.objects.get(pk=1)視圖的基本使用 概述:
在Django中視圖對(duì)WEB請(qǐng)求進(jìn)行響應(yīng)的,視圖的本質(zhì)是python中的函數(shù),在views.py文件中定義,
視圖接收request對(duì)象作為第一個(gè)參數(shù),包含了請(qǐng)求的信息
定義視圖view.py
from django.shortcuts import render from django.http import HttpResponse from myApp.models import Grade, Student def index(request): return HttpResponse("sunck is a good man") def detail(request, num): return HttpResponse("detail %s" % num)配置路由
主路由:與工程名相同名字的目錄下的urls.py文件
配置文件:ROOT_URLCONF = "project.urls"
urls.py
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r"^admin/", admin.site.urls), # 包含子路由 url(r"^", include("myApp.urls")), ]
子路由:在應(yīng)用目錄下創(chuàng)建名為urls.py的文件
作用:路由分發(fā),規(guī)定哪個(gè)網(wǎng)址由哪個(gè)視圖處理
urls.py
from django.conf.urls import url from myApp import views urlpatterns = [ # 路由匹配 url(r"index/", views.index), url(r"detail/(d+)/", views.detail), ]模板的基本使用
概述:模板是HTML界面,可以根據(jù)視圖傳遞的數(shù)據(jù)進(jìn)行填充
創(chuàng)建模板目錄:工程目錄下創(chuàng)建名為templates的目錄,也可以放在項(xiàng)目目錄中
配置模板路徑:settings.py
TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [os.path.join(BASE_DIR, "templates")], "APP_DIRS": True, }定義模板
grade.html
班級(jí)信息 班級(jí)信息
student.html
學(xué)生信息 學(xué)生信息
在視圖中返回模板
views.py
from myApp.models import Grade, Student def students(request): #獲取所有學(xué)生信息列表 stus = Student.objects.all() return render(request, "students.html", {"stusList":stus}) def grades(request): grades = Grade.objects.all() return render(request, "grades.html", {"grades": grades}) def gstudents(request, gid): stus = Student.objects.filter(grade_id=gid) return render(request, "students.html", {"stusList":stus})
urls.py
url(r"students/grade/(d+)/", views.gstudents),
2-Django——模型
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/41921.html
摘要:而對(duì)于標(biāo)簽來(lái)說(shuō),一篇文章可以有多個(gè)標(biāo)簽,同一個(gè)標(biāo)簽下也可能有多篇文章,所以我們使用,表明這是多對(duì)多的關(guān)聯(lián)關(guān)系。理解多對(duì)一和多對(duì)多兩種關(guān)聯(lián)關(guān)系我們分別使用了兩種關(guān)聯(lián)數(shù)據(jù)庫(kù)表的形式和。表明一種一對(duì)多的關(guān)聯(lián)關(guān)系。 設(shè)計(jì)博客的數(shù)據(jù)庫(kù)表結(jié)構(gòu) 博客最主要的功能就是展示我們寫(xiě)的文章,它需要從某個(gè)地方獲取博客文章數(shù)據(jù)才能把文章展示出來(lái),通常來(lái)說(shuō)這個(gè)地方就是數(shù)據(jù)庫(kù)。我們把寫(xiě)好的文章永久地保存在數(shù)據(jù)庫(kù)里,...
閱讀 3766·2021-11-11 16:55
閱讀 1694·2021-10-08 10:04
閱讀 3650·2021-09-27 13:36
閱讀 2867·2019-08-30 15:53
閱讀 1924·2019-08-30 11:17
閱讀 1319·2019-08-29 16:55
閱讀 2155·2019-08-29 13:57
閱讀 2578·2019-08-29 13:13