Python之Django框架入门(一)

准备工作:安装Django
1.虚拟环境的创建
.vertualenvs/h4(其实可以不用单独创建一个,只是为了确保独特性)

2.项目的创建
任意位置-创建项目大文件夹(图书英雄)
terminal:首先workon h4 进入虚拟环境h4 然后cd到图书英雄 
         指令:django-admin startproject test1
然后会出现一个同名文件夹和两个文件

目录说明:
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
  • 内层的目录:项目的真正的Python包
  • _init _.py:一个空文件,它告诉Python这个目录应该被看做一个Python包
  • settings.py:项目的配置
  • urls.py:项目的URL声明
  • wsgi.py:项目与WSGI兼容的Web服务器入口

3.设计项目元素(可忽略 一般不是程序员做的事情)
例如“图书英雄”
  • 本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄
  • 图书表结构设计:
    • 表名:BookInfo
    • 图书名称:btitle
    • 图书发布时间:bpub_date
  • 英雄表结构设计:
    • 表名:HeroInfo
    • 英雄姓名:hname
    • 英雄性别:hgender
    • 英雄简介:hcontent
    • 所属图书:hbook
  • 图书-英雄的关系为一对多

4.创建应用
terminal :python manage.pystartapp booktest
出现booktest文件夹


定义模型类(就是一个普遍适用的框架模子用来批量生产大量同类型的产品 流水车间的模具)
有一类数据就需要一个模具类与之对应
打开models.py文件(空)
引入原厂模具制作工具
  • 引入包from django.db import models
  • 模型类继承自models.Model类
  • 当输出对象时,会调用对象的str方法(把做好的产品str格式打印出来)
from django.db import models

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateTimeField()
    def _ _str_ _(self):
        return "%d" % self.pk

class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)
    hgender = models.BooleanField()
    hcontent = models.CharField(max_length=100)
    hBook = models.ForeignKey('BookInfo')
    def _ _str_ _(self):
        return "%d" % self.pk
models.py文件代码总结:
引入django原厂模具制作工具
制作本项目需要的两大模具(图书和英雄)
加入两大模具的细节雕刻(名称、时间等等)
将雕琢好的模具通过str格式打印(return)出来
先看一眼憧憬一下 试着运行一下项目(只有一个大门里边都是空的)
terminal: python manage.py runserver 8080


得到一个地址,打开后可以看到



5.生成数据包
车间机器都造好了,通知员工厂里有一个新的产品车间了:

  • 激活模型:编辑settings.py文件,将booktest应用加入到installed_apps

  • 生成迁移文件:根据模型类生成sql语句(成立一个新的项目小组)
terminal: python manage.py makemigrations

booktest文件夹下出现一个新的文件夹migrations

  • 执行迁移:执行sql语句生成数据表(项目小组拿到相关资料)
terminal:  python manage.py migrate


生成一个 0001_initial.py 文件


6.测试数据操作(车间工人可以开始干活了,工具是terminal)
  • 进入python shell,进行简单的模型API练习
terminal: python manage.py shell

未完待续...

猜你喜欢

转载自blog.csdn.net/sinat_37928025/article/details/79187342