1.创建一个项目:
命令行模式先输入:django-admin startproject 项目名
2.目录层级说明
manage.py #一个命令工具,可以随便使我们用多种方式对Django项目交互
项目名目录:
__init__.py:一个空文件,他告诉python这个目录应该被看成一个python包
settings.py:项目的配置文件 需修改的django配置文件
urls.py:项目的url声明 需修改的django配置文件
wsgi.py:项目与wsgi兼容的web服务器接口
3.配置mysql数据库
首先在__init__.py中配置
import pymysql
pymysql.install_as_MySQLdb()
在settings.py中配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'suck',
'USER':'root',
'PASSWORD':'123456',
'HOST':'localhost',
'PORT':'3306'
}
}
4.创建应用
命令行模式下输入:python manage.py startapp 应用名
5.app应用中目录层级说明
admin.py:站点配置
models.py:模型
views.py:视图
6.激活应用
在settings.py中,将应用添加入到INSTALLED_APPS中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app'
]
7.定义模型
在models.py中定义模型
首先引入包:from django.db import models
模型类要继承models.Model类
模型类中的属性对应数据库中的字段
例如:
class Greads(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)
#关联外键
sgread=models.ForeignKey('Greads', on_delete=models.CASCADE)
注意:在django2.0以上的版本添加外键时需要在后面添加on_delete=models.CASCADE
8.生成数据库中的表
a)生成迁移文件 执行命令(python manage.py makemigrations)
b)执行迁移 执行命令(python manage.py migrate)生成数据库的表
9.用python操作数据库(测试数据)
a)进入python shell中(输入命令:python manage.py shell)
b)导入包
from app.models import Greads,Students
from django.utils import timezone
from datetime import *
c)查询所用数据(输入命令:类名.objects.all())
d)添加数据(本质是创建一个模型类的对象属性)
关联对象(有外键的添加方法)
>>> g.ggirlnum=12
>>> g.save()
>>> s=Students()
>>> s.sname='zhangwei'
>>> s.sgender=False
>>> s.sage=20
>>> s.scontend='我叫小为'
>>> s.sgread=g #将关联的外键属性直接添加到表中
>>> s.save()
获取关联对象的集合
对象名.关联对象类名_set.all()
g.students_set.all()
创建学生属于哪个班级
对象名.关联对象类名_set.create(对应字段属性=u‘属性值’)
注意:u为转码
格式:
gread1=类名()
gread1.类中属性=‘对应数据’
gread1.save()保存数据
例子:
g=Greads()
g.gname='python'
g.gdate=datetime(year=2017,month=3,day=4)
g.ggirlnum=3
g.gboynum=70
g.save()
e)查看某个对象(输入代码:Greads.objects.get(pk=对应的id))
f)修改数据(格式:模型对象.属性=新值)
g.ggirlnum=12
g.save()
g)删除数据(格式:模型对象.delete())
g.delete()
10.配置admin应用站点
概述:负责添加,修改,删除,查询
公告访问
在settings.py中的INSTALLED_APPS中添加'django.contrib.admin'
创建管理员用户:(我的账户是:用户名:admin,密码:123456789)
执行:python manage.py createsuperuser输入对应的数据
汉化:将LANGUAGE_CODE='zh-Hans'
TIME_ZONE='Asia/Shanghai'
管理数据表:
修改admin.py文件
from django.contrib import admin
# Register your models here.
from .models import Greads,Students
#注册
admin.site.register(Greads,类名)
admin.site.register(Students)
自定义管理页面
创建类
class 类名(admin.ModelAdmin):
list_display=['页面对应的字段名'] 显示字段
list_filter=['过滤的字段'] 过滤字段
search_fields=['搜索的字段'] 搜索字段
list_per_page=分页数(4) 分页
添加页和修改页:
fields=['添加和修改对应页面的字段'] 属性的先后顺序
fieldsets[一个元祖] 给属性分组
fieldsets[
("num",{"fields":['字段1','字段2'...]})
("base",{"fields":['字段1','字段2'...]})
]
注意:fields和fieldsets不能同时使用
admin.site.register(Greads,类名)
添加多个学生:
创建添加学生的类
class 类名stu(admin.TabularInline):
model=关联表的类名
extra=需要创建的多少个学生
其次在自定义管理页面中的
class 类名(admin.ModelAdmin):
inlines=[学生类名stu]
设置页面列的名称:
gender.short_description=" " gender为函数名
11.视图配置
from django.http import HttpResponse
def index(request):
return HttpResponse('xiaoluo is good man')
配置url
在主目录下的urls.py中配置
from django.contrib import admin
from django.conf.urls import url,include
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^',include('app.urls'))
]
在app目录下新建一个urls.py
from django.conf.urls import url
from app import views
urlpatterns=[
url(r'^$',views.index)
]
配置多模板路径
在项目中新建目录,然后配置目录路径
在settings.py中的TEMPLATES中的DIRS中配置
'DIRS': [os.path.join(BASE_DIR,'html')],
在新建目录中新建一个html文件
在urls.py中配置路径
在view.py中渲染视图,将数据传递给模板,模板在渲染给页面,将渲染好的页面返回给浏览器
在页面上点击超链接显示对应班级的学生姓名