django学习

一、Django安装

pip install Django==1.11.4

二、验证安装

import django
django.get_version()

三、介绍

1、简介

是用python语言写的开源web开发框架,并遵循MVC设计。

Django的主要目的是简便、快速的开发数据库驱动的网站。

2、特点

  • 重量级框架

  • MVT模式

  • MVC
    其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。
    M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
    V全拼为View,用于封装结果,生成页面展示的html内容。
    C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
    MVT
    M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
    V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
    T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。

四、创建第一个项目

1、输入:django-admin startproject project

查看目录结构:tree ./F

2、目录层级说明

manage.py

一个命令行工具、可以让你各种方式与该Django项目进行交互

init.py

一个空文件、告诉python该项目是一个python包

urls.py

项目的url申明,一份由Django驱动的网站“目录”

wsgi.py

一个wsgi兼容的web服务器入口,以便运行你的项目

基本操作

1、设计表结构

a、班级表结构

表名:grade

字段

班级名称:gname
成立时间:gdate
女生总数:ggirlnum
男生总数:gboynum
是否删除:isDelete

b、学生表结构

表名:students

字段:

学生姓名:sname
学生性别:sgender
学生年龄:sage
学生简介:scontend
所属班级:sgrade

2、配置数据库

注意 django默认的数据库是sqlit数据库
DATABASES ={
‘default’:{
‘ENGINE’:‘django.db.backends.sqlite3’,
‘NAME’:oos.path.join(BASE_DIR,‘DB.Sqlite3’),
}}
在setting.py 中,通过DATABASE选项进行数据库配置

a、配置MySQL

python3.x安装的是PyMySQL
在__init__.py文件中写入两行代码

1 import pymysql
2 pymysql.install_as_MySQLdb()

b、格式

DATABASES = {
‘default’:{
‘ENGINE’:‘django.db.backends.mysql’,
‘NAME’:‘wj’,
‘USER’:‘密码’,
‘HOST’:‘localhost’,
‘PSRT’:‘3306’,
}}

3、创建应用

在一个项目中可以创建多个应用,每个应用进行一种业务处理

a、进入到project的目录

b、执行:python manage.py startapp myAPP

c、myAPP目录说明

admin.py

文件跟网站的后台管理站点配置相关

models.py

文件用户保存数据库模型类。

views.py

文件用于编写Web应用视图。

tests.py

文件用于开发测试用例,编写单元测试

4、激活应用

在 setting.py文件中,将myAPP添加到INSTALLED-APPS选项中

5、定义模型

概述:有一个数据表就应该有对应的一个模型
在models.py中定义模型

引入:from django.db import models
模型类要继承 models.Model类

from django.db import models
class Grades(models.Model)
gname=models.CharField(mex_length=20)
gdate = models.DateTimeField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete=models.BooleanField(default=False)

clsss Student(models.Model)
sname=models.CharField(max_length=20)
sgender=models.BooleanField(default=True)
sage=models.IntegerFiled()
scontend=models.CharField(max_length=20)
isDelete=models.BooleanField(default=False)
sgrade =models.ForeignKey('Grades') #关联外键

6、在数据库中生成数据表

a、生成迁移文件

执行:python manage.py makemigratuins

在migrations目录下生成一个迁移文件、此时还没有生成数据表

b、执行迁移

执行:python manage.py migrate

相当于执行sql语句创建数据表

7、测试数据操作

a 、进入到python shell

b、执行:python manage.py shell

c、引入包:

from myAPP.models import Grades,Student
from django.utils import timezone
from datetime import *

d、查询所有数据

格式:类名.objects.all()
Grades.objects.all()

e、添加数据

本质:创建一个模型类的对象实例
grade1=Grades()
grade1.gname=‘python04’
grade1.gdate=datetime(year=2020,month=4,day=4)
grade1.ggirlnum=3
grade1.gboynum=70
grade1.save()

f 、查询某个对象

格式:类名.objects.get(pk=1)
Grades.objects.get(pk=1)

g、修改数据

模型对象.属性=新值
grade1.gboynum=60
grade1.save()

h、删除数据

物理删除(真实删除)
模型对象.delete()

逻辑删除 (isDelete =True)

I、关联对象

创建一个学生

stu=Students()
stu.snname=‘小明’
stu.sgender=False
stu.scontend=‘我叫小明’
stu.sgrade=grade1
stu.save()
需求:获取python04班级的所有学生
格式:对象名.关联的对象名_set.all()
geade1.students_set.all()

创建一个学生属于 “python04”班

stu1 = grade1.students_set.create(sname=u'曾志伟’,sgender=True,scontend=u'我叫曾志伟‘,sage=45)
不用save() 直接创建成功

7、启动服务

a、格式 python manage.py runserver
b、说明

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

8、Admin站点管理

a、概述:
内容发布

负责添加、删除、修改内容

公共访问
b、配置Admin应用

在settings.py文件中的INSTALLED_APPS中添加“django.contrib.admin",默认已经添加好的

c、创建管理员用户
执行:python manage.py createsuperuse

依次输入用户名、邮箱、密码
创建后在网址输入账号密码:http://127.0.0.1:8000/admin/

d、汉化

修改settings.py 文件
LANGUAGE_CODE =‘zh-Hans’
TIME_ZONG=‘Asia/Shanghai’
USE_I18N=True
USE_L10N=True
USE_TZ=True

9、管理数据表

a、修改admin.py文件

from .models import Grades,Students
#注册
admin.site.register(Grades)
admin.site.register(Students)

b、自定义管理页面

from .models import Grades,Students

注册
class GradesAdmin(admin.ModelAdmin):
# 列表页属性
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']})
# ]

admin.site.register(Grades, GradesAdmin)

属性说明:

列表页属性

list_display

显示字段

list_filter

过滤字段

search_fields

搜索字段

list_per_page

分页

添加修改属性

fields

属性先后顺序

fieldsets

给属性分组
注意:fields与fieldsets不能同时使用

关联对象

需求:在创建一个班级时可以添加几个学生

class StudentsInfo(admin.TabularInline):# Stackedlnline
    model = Students
    extra = 2
class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]

10、视图的基本使用

a、概述:

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

b、定义视图

from django.http import HttpResponse
def index(request):
return HttpResponse("WJ is a good man")

c、配置url

修改project目录下的url.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’))
]

在myAPP应用目录下创建一个urls.py文件

from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^$',views.index)
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值