一、Django基本流程走通

一、安装

1、终端:pip install Django

2、进入Python环境:

import django
django get_version()

二、创建项目

1、创建一个目录(文件夹),终端进入该目录:

django-admin  startproject projectName

2、(查看目录层级)

tree  .   /F        # 终端

manage.py    命令行工具,可以多种方式对Django项目进行交互

__init__.py      表示该目录可被看做是一个包

settings.py      项目配置文件

urls.py            项目URL声明

wsgi.py            项目与wsgi兼容的web服务器入口

3、配置数据库(MySQL)

Django默认使用SQLite

配置MySQL:

(1)

import pymysql                    # __init__.py
pymysql.install_as_MySQLdb()

(2)

DATABASES = {                        # settings.py
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': “DataBaseName”,
        'USER':'root',
        'PASSWORD':'  ',
        'HOST' : 'localhost',
        'PORT': '3306'
    }
}

4、创建应用(可创建多个应用,每个应用进行一种业务处理)

(1)、终端:进入项目目录

python  manage.py startapp AppName

应用目录说明:

admin.py        站点配置

views.py           视图

models.py        模型

(2)激活

在settings.py中将appName加入INSTALLED_APPS中


(3)定义模型

一个数据表 对应 一个模型

models.py中引入

from django.db import models        # 模型类要继承models.Model 类

创建模型类

class Grades(models.Model):
    gname = models.CharField(max_length=50)
    date  = models.DateTimeField() 
 def __str__(self):
     return "%s" % (self.gname)
class Stus(models.Model):
    sname = models.CharField(max_length=50)
    sgrade = models.ForeignKey("Grades")

注: 不需要定义主键,在生成时自动增加。

(4)在数据库中生成数据表

以管理员身份打开终端,进入MySQL:

mysql -u root -p;                
show databases;
create databases databaseName;

迁移文件:在项目目录下

python manage.py makemigrations     # 在migration目录下生成一个迁移文件,此时数据库中还未生成表

执行迁移:

python manage.py migrate            # 相当于执行SQL语句,生成表

mysql下:

use databaseName;
show tables;
desc table_name;                    # 查看创建的表结构
select * from SC_grades;

(5)测试数据操作

进入Python shell

python manage.py shell
引入包:
from appName.models import Grades, Stus
from django.utils import timezone
from datetime import *

查询所有数据

Grades.objects.all()

添加数据: 创建一个模型类的对象实例

grade1 = Grades()
grade1.gname = "python"
grade1.gdate = datetime(year=2017, month=1, day=1)
grade1.save()

查看某个对象:

Grades.objects.get(pk=2)

修改对象:

模型对象 . 属性 = 新值

grade2.gboynum = 40
grade2.save()

删除数据:

grade2.delete()      # 物理删除,数据库中的表中的数据被删除

关联对象:

stu = Stus()
stu.name = "shit"
stu.sgrade = grade1        # 关联
stu.save()

获取关联对象的集合(终端)

            获取该班所有学生: grade1.stus_set.all() 

            创建属于该班的某学生 : 

stu4 = grade1.stus_set.create(sname = "shittt")

stu3 = grade2.students_set.create(sname = u'bob', sgender=True, sage = 12, scontent= u'ddddddddddddddddd')

启动服务器    (这是一个纯Python写的轻量级web服务器,仅在开发开发测试中使用。)

python manage.py runserver  ip:port            # ip:port 默认本机ip ,端口默认8000

Admin站点管理:(localhost:8000/admin)

            配置:settings.py/ installed_app,  添加 django.contrib.admin

            创建管理员用户: 

python manage.py createsuperuser          # enter username   pwd email

            汉化: 

# settings.py 
language_code = ' zh-Hans '   time_zone = 'Asia/Shanghai'

            管理数据表:

                        修改admin.py 

from .models import Grades, Stus
admin.site.register(Grades)      
admin.site.register(Stus)

自定义管理页面:

    属性说明:

       列表页

            list_display: 显示字段

            list_filter:       过滤字段

            search_fields:    搜索

            list_per_page:     分页

       添加修改页属性:      (二者不可同时使用)  

           fields : 属性的顺序

           fieldsets:  给属性分组

    关联对象:

        创建班级时直接添加学生

# admin.py
class StudentsInfo(admin.TabularInline):		# StackedInline
    model = Students
    extra = 2                # 学生个数

使用装饰器完成注册:

@admin.register(Students)            # admin.py 
class StudentAdmin(admin.ModelAdmin):
# admin.site.register(Students, StudentAdmin)

___________________________________________admin管理页面end______________________________________________________


视图的使用:

        在Django中,视图对web请求进行回应

        视图就是一个Python函数 在views.py中定义

from django.http import HttpResponse
def index(request):
	return HttpResponse("how you doing man")

        配置URL:

                修改project子目录下的urls.py

                在应用目录下创建urls.py                             # F:\CODE\Django\School\SC


模板的使用:

                模板是HTML页面,可根据视图中传递的数据进行填充

                创建模板: 在project目录下创建templates目录,在该目录下创建对应项目的模板目录

                配置路径:

TEMPLATES = [                    # settings.py
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],

                定义grades和students.html两个模板

                        语法: {{   输出值,可以是变量,也可以是   对象.属性  }}

                                    {%  执行代码段%}

                http://localhost:3320/grades  

                                1、写grades.html模板    

                                2、定义视图

def grades(request):                    #  School/SC/views.py
    # 去模板取数据
    gradesList = Grades.objects.all() 
    #将数据传递给模板,模板在渲染页面,将渲染好的页面返回浏览器
    return render(request, 'SC/grades.html', {"grades": gradesList})

                                3、配置url

url(r'^grades/$', views.grades)

            点击班级,显示对应班级的所有学生:

                                1、视图

def gradesStudents(request,num):            # SC/views.py
	# 获取对应的班级对象
    grade = Grades.objects.get(pk=num)
    # 获取对应班级下的所有学生列表
    studentsList = grade.students_set.all()
    return render(request, 'SC/students.html', {"students": studentsList})

                                2、url

url(r'^grades/(\d+)/$', views.gradesStudents),

————————————————————end————————————————————


若要重新迁移文件,先把迁移文件删掉(School\SC\migrations\0001_initial.py),然后删掉对应数据库,之后再迁移。

若要增加表,先在应用目录下的models.py 添加类,然后再迁移文件,执行迁移,

若要增加表中字段或表中其他修改,建议删表重建。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值