python django 学习(第一章) 基本流程走通1-10

一、 创建项目

基本流程走通02(创建项目、目录层级)

  1. 直接在windows文件夹下创建项目(不要有中文),打开cmd终端cd到刚才创建目录底下。
    diango-admin startproject project(project name)输入命令创建项目。
    tree . /F看到目录层级
manage.py  一个命令行工具,可以使用多种方式对django项目进行交互。
project
	_init_.py     控件,告诉python这个目录应该被看作一个Python包
	settings.py   配置文件(修改)		
	urls.py       url声明(修改)
	wsgi.py  	项目与WSGI兼容的web服务器入口

二、 基本操作(配置数据库、创建应用、激活应用)

基本流程走通03(配置数据库)

1.设计数据库表:
界面显示班级,学生信息(存在数据库,要设计表结构)
2. 班级表结构(表名 :grade 字段:班级名称,成立时间,女生总数,男士总数,是否删除)
学生表结构(表名:students 字段:姓名,性别,年龄,简介,所属班级,是否删除)
3. 启动数据库过程:C盘-》windows-》system32-》cmd(管理员身份运行)
netstart mysql157 启动mysql服务
3.配置数据库
django默认使用sqlLite数据库(settings.py -》DATABASES),使用mysql,在settings.py文件中,通过DATABASES选项进行数据库配置,python3.x安装的是PyMySql,

1.在__init__.py文件中写入两行代码:
 import pymysql
 pymysql.install_as_MySQLdb()
2.配置数据库,在settings.py
 DATABASES = {
 'default':{
 'ENGINE' :'django.db.backends.mysql',
 'NAME' : 'sunck',
 'USER': 'root'
 'PASSWORD':'sunck',
 'HOST' : 'localhost',
 'PORT' : '3306',
  }
 }
 换为mysql
 NAME = "数据库名字sunck" 没有数据库应该先建一个数据库
 mysql -u root -p
 show databases;
 use "sunck数据库名"
 drop databases "数据库名sunck"
 create database "数据库名sunck"
 3.创建应用(可以创建多个应用,每个应用处理一种业务)//基本流程走通04
 创建应用:打开黑屏终端,进入01-sunck下的project
 cd project  -> 执行 python manage.py startapp myapp'名称'回车,多了一个myapp文件夹,
  myapp 目录:
  	admin.py   站点配置
  	models.py  模型
 	views.py  视图
激活应用:(django 1.8.2中文文档)将应用配置带项目,在settings.py文件中,将myapp应用加入到INSTAL_LED_APPS选项中,直接写'myapp'

三、 模型

基本流程走通04(定义模型、)

  1. 定义模型
    概述:有一个数据表就对应一个模型,以上我们有两个数据表,应该定义两个模型,模型用于与数据库交互,在myapp文件夹下的models.py中定义模型。
 from django.db import models  引入包,模型类要继承models.Model类,
 类属性对应表字段,创建模型类:
 class Grades(models.Model):
 	gname = models.CharField(max_length = 20)
 	gdata = models.DateTimeField()
 	ggrilnum = models.IntegerField()
 	gboynum = models.IntegerField()
 	gisDelete = model3.BooleanFiled(default = False)
 	
 	def _str_(self)return%s-%d-%d-%d”%(self.gname,self.gdata ,self.ggrilnum ,self.gboynum)     #显示,需要重启shell quit()-->python manage.py shell->导库->Grades.objects.all()会打印数据

def _str_(self)return self.gname  #返回班级名

基本流程走通05(迁移文件、操作数据)

 class Students(models.Model):
 	sname = models.CharField(max_length = 20)
 	sgender = models.BooleanFiled(default = True)
 	sage = models.IntegerField()
 	scontent = models.CharField(max_length = 20)
 	sisDelete = models.BooleanFiled(default = False)
 	#关联外键,不需要定义主键,在生成时自动添加,并且自动增加
sgrade = models.ForeignKey("Grades")  //模型已经定义完成
  1. 在数据库中生成数据表
    1)生成迁移文件
    project文件夹下,python manage.py makemigrations生成迁移文件,生成migrations目录,-》多了一个id就是主键,show tables;执行迁移文件,没有表生成。
    2)执行迁移 :执行python manage.py migrate,OK成功,此时数据库多了很多表包括哟自己创建的两个表。相当于执行sql语句去创建sql表,表名添加项目名。通过模型对象操作数据。
select * from myapp_grades表名
desc myapp_grades #查看具体信息
  1. 操作数据
    进入到python shell 环境执行python manage.py shell;
    引入一些包:
 from myApp.models import Grades,Students
 from django.utils import timezone
 from  datetime import  *

基本流程走通06(数据增删改查)

#可以在shell黑屏底下直接写
查询所有数据:Grades.objects.all() #object为隐藏属性,all方法可以看到Grades里面所有的数据。
添加数据:本质是创建一个模型类的对象实例。创建对象,

#插入
gradel = Grades()
gradel .gname = "python04"
gradel .gdate = datatime(year = 2017,month = 7,day = 17)
gradel .ggirlsnum = 3
gradel .gboynum= 70
gradel .save()  //保存到数据库
select * from myapp_grades表名  查看现在已经有了数据
#查看
grade2 会有数据 #查看具体某个对象
Grades.object.get(pk = 2) #查看id =2的对象信息
g = Grades.object.get(pk = 2) #查看id =2的对象信息
g
#修改
grade2.gboynum = 60 #目前只是模型修改,数据库里面不会修改
grade2.save()  #数据库里面更新
#删除
grade2.delete()  #删除 物理删除,数据库里面也没有数据,模型对象.delete

基本流程走通07(服务器、admin)

  1. 关联对象
 stu = Students()
 stu.sname = "学1"
 stu.sgender = False
 stu.sage = 20
 stu.scontend = "我叫学1"
 stu.sgrade = grade1
 stu.save()
 select * from myapp_students;  #sgrade_id = 1 外键

#获得关联对象的集合,获取python04班级的所有学生
  grade1(类名).students(关联对象名)_set.all()
#创建曾志伟,直接属于grade1班
  stu3 = grade1.students_set.creat(sname = u'曾志伟',sgender = True,scontend = u'我叫曾志伟')  不用sava,直接存到数据库
  1. 启动服务器
    格式:python manage.py runserver ip:port ,ip可以不写代表本机ip,端口号默认8000。python manage.py runserver ,这是一个python写的轻量级服务器,仅在测试开发中使用。cd project 目录 -> 启动服务器:python manage.py runserver
    -> net start mysql157
    127.0.0.1:8000 it worked!!! 服务以及运行

  2. adminz站点管理
    内容发布:添加,修改,删除内容(可视化管理)
    公告访问:
    1)配置admin应用:在settings.py文件中添加

INSTALLED_APPS = [
'django. contrib.admin'
]  #默认是已经添加好的,
#管理一般有账号与密码,所以要创建管理员和密码
 cd project 目录
 python manage.py createsuperuser
 创建好了依次输入用户名,邮箱,密码
#汉化
 网址 :127.0.0.1:8000/admin 直接访问
 汉化:修改settings.py  -》 LANGUAGE_CODE = 'zh-Hans'
 TIME_ZONE = 'Asia/Shanghai'不用重启,直接刷新
#管理数据表

基本流程走通08(admin显示控制、属性说明)

管理数据表;主要修改admin.py文件

from .models import Grades,Student
#注册
admin.site.register(Students)
admin.site.register(Grades) #刷新界面,管理页面不友好
#自定义管理页面
admin.site.register(Grades)
class GradesAdmin (admin.ModelAdmin): #列表页属性
#显示字段,可以点击,添加几个显示几个字段
	list_display =['pk','ganme','gdata','ggirlnum','gboynum','gisDelete'] 
#过滤器过滤字段,显示想要的内容
	list_filter = ['ganme']
#添加了查找框,搜索字段
searc _fields =['ganme']                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #分页字段 ,每五条是一页
	list_per_page = 5     []
#添加、修改页属性  添加页 | 点击pk进入修改页
#属性的先后顺序 gname gdata 
	fields = ['ggirlnum','gboynum','ganme','gdata','gisDelete'] #没有'pk'
#给属性分组  fields |fieldsets 不能同时使用
	fieldsets = [
	("num",{"fields":['ggirlnum','gboynum']}),
	("base",{"fields":['ganme','gdata','gisDelete']}),
	]

学生的 web添加学信息,可以直接添加到数据库中

#自定义管理页面
class StudentsAdmin (admin.ModelAdmin): #列表页属性
	list_display =['pk','sanme','sage','sgender','scontend','sgrade'] 
	list_filter = ['ganme']
	searc _fields =['ganme']                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
	list_per_page = 5     []
#添加、修改页属性  添加页 | 点击pk进入修改页
#属性的先后顺序 gname gdata 
	fields = ['ggirlnum','gboynum','ganme','gdata','gisDelete'] #没有'pk'
#给属性分组  fields |fieldsets 不能同时使用
	fieldsets = [
	("num",{"fields":['ggirlnum','gboynum']}),
	("base",{"fields":['ganme','gdata','gisDelete']}),
	]

基本流程走通09(关联对象)

需求:在后台管理界面创建一个班级时,可以直接添加几个学生。

class StudentsInfo(admin.StackInline):
class StudentsInfo(admin.TabularInLine):
	model = Students
	extra = 2  #一个班级连个学生
class GradeAdmin(admin.ModleAdmin):
	inlines = [StudentsInfo] #加两行学生项添加的列表

bool值显示男女,不显示对错符号:

class StudentsAdmin (admin.ModelAdmin):
	def gender (self):
		if self.sgender = true:
			return "男"
		else:
			return "女"
	gender.short_description = "性别"  #设置页面列的名称,
list_display =['pk','sanme','sage',gender,'scontend','sgrade'] 

执行动作位置问题:

#执行动作所放位置
actions_on_bottom = true #上下都有
actions_on_top = False  #上下都有

以后使用装饰器注册:类换是要有,但是上面为

@admin.register(Students)
替换
admin.site.register(Grades) #刷新界面,管理页面不友好

基本流程走通10(视图概述)

视图的基本使用:

  1. 概述:视图对web请求进行回应,视图就是一个python函数,在view.py文件中定义视图
#定义视图(定义函数)
 -----------------view.py ------------------------------------
from django.http import HttpResponse 
def  index(request ):
	return HttpResopnse ("sunck is a good man") #先传一个数据
-----------------project.urls.py-------------------------------
#配置URL  1.修改project-》urls.py文件
urlpatterns = [
	url(r' ^admin/',admin.site.urls), #一个url绑定一个试图
	url(r'^',include('myapp.urls'))                        #1270.0.0 后面什么也不显示,r代表什么都匹配,
]
#2.需要在应用底下,即myapp底下创建urls.py
-----------------myapp.urls.py-------------------------------
```python
myapp.urls.py
from django.conf.urls  import url
from . import views
urlpatterns = [
	url(r'^$',views.index),
	url()                      
]

1.匹配顺序#配置URL  1.修改project-》urls.py文件
urlpatterns = [
	url(r' ^admin/',admin.site.urls), #一个url绑定一个试图
	url(r'^',include('myapp.urls'))      
3.def  detail(request ,num):
	return HttpResopnse ("detail -%s"%num)
2.myapp.urls.py
urlpatterns = [
	url(r'^$',views.index),
	url(r' ^(\d+)/(\d+)$',views.detail)                      
]
输入127.0.0.1:8000/1000/
输出 detail -1000

模板的基本使用:模板是html页面,可以根据视图中传递过来的数据,进行填充。

1.#创建模板目录:创建一个和myapp,project同级的目录templates,可以在templates下创建一个myapp,存放对应myapp的模板。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值