美文网首页我爱编程
Django开发流程

Django开发流程

作者: Freedom_pxc | 来源:发表于2018-04-13 20:22 被阅读0次
    流程目录:
    • 创建Django项目
    • 创建应用
    • 模型:
      数据库配置
      数据库表的定义
      定义模型类
      生成数据表
    • 模板
    • 视图
    • 服务器管理
    • 站点管理
    具体步骤

    1.创建虚拟环境:
    mkvirtualenv 虚拟环境名称


    2.进入虚拟环境:
    workon 虚拟环境名称


    3.创建Django项目:
    django-admin startproject 项目名称


    4.进入项目,创建应用:
    python manage.py startapp booktest


    5.在pycharm中打开项目
    -- 数据库的配置:settings.py中DATABASES项配置

    --DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',                你手动创建的数据库要和这个名称一样
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',             (本地:这里填localhost也可以)
        'PORT': '3306',
        }
    NAME: 指定的数据库名,如果是 sqlite 的话,就需要填数据库文件的绝对位置 
    USER: 数据库登录的用户名,mysql 一般都是 root 
    PASSWORD:登录数据库的密码,必须是 USER 用户所对应的密码
    HOST: 由于一般的数据库都是 C/S 结构的,所以得指定数据库服务器的位置,我们一般数 据库服务器和客户端都是在一台主机上面,所以一般默认都填 127.0.0.1 
    PORT:数据库服务器端口,mysql 默认为 3306
    (HOST 和 PORT 都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的 )
    
        -- 数据库表的定义:(需求)
    
        -- 定义模型类:Modle里面,引入包(from django.db import models)
                   模型继承自 models.Model类
    
        -- 生成数据表:激活模型,编辑settings.py,在INSTALLED_APPS中添加应用
    
        -- TEMPLATES :  'DIRS': [os.path.join(BASE_DIR,'templates')],
    

    6.生成迁移:

        python manage.py makemigrations  迁移文件被生成到应用的migrations
    
        python3 在django 项目配置文件目录下的__init__.py文件中引入:
                                    import pymysql
                                    pymysql.install_as_MySQLdb()
    此操作,一定先手工创建自己的数据库:
                                    进入数据库:mysql -uroot -p
                                    创建数据库:create database 库名 charset="utf8";
    

    7.执行迁移:
    python manage.py migrate


    8.可以进行下数据测试,(实现数据库中的增删改查,记得引入你对应内容):
    python manage.py shell

    (1)进入python shell: 
        python manage.py shell 
    (2) 引入需要的包: 
        from booktest.models import BookInfo,HeroInfo 
        from django.utils import timezone  
        from datetime import * 
    (3)查询所有图书信息: 
        BookInfo.objects.all() 
    (4)新建图书信息: 
        b = BookInfo() 
        b.btitle="射雕英雄传" 
        b.bpub_date=datetime(year=1990,month=1,day=10) 
        b.save() 
    (5)查找图书信息: 
        b=BookInfo.objects.get(pk=1) 
    (6)修改图书信息: 
        b.btitle=u"天龙八部" 
        b.save() 
    (7)删除图书信息: 
        b.delete() 
    (8)关联对象的操作: 
        对于HeroInfo可以按照上面的操作方式进行 
        添加,注意添加关联对象 
        h=HeroInfo() 
        h.hname=u'郭靖' 
        h.hgender=True  
        h.hcontent=u'降龙十八掌' 
        h.hBook=b 
        h.save() 
    关联集合 
    获得关联集合:返回当前book对象的所有hero 
        h1= b.heroinfo_set.all()[0] 
        h1.hname 
        django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到子表的信息。 
        这个属性的名称默认是以子表的名称小写加上_set来表示 
        默认返回的是一个querydict对象 
        有一个HeroInfo 存在,必须要有一个 BookInfo 对象,提供了创建关联的数据: 
        h=b.heroinfo_set.create(hname=u'黄蓉',hgender=False,hcontent=u'打狗棍法') 
    

    9.模版:(html)

        在网站目录下创建templates至目录
        修改settings.py文件,TEMPLATES :  'DIRS': [os.path.join(BASE_DIR,'templates')],
        在模板中访问视图传递的数据:{{输出值}} #变量,对象,属性
                        {%执行的代码%}
        定义index.html模板(首页)
        定义detail.html模板(详述)也可以自定义很多
    

    10.视图:
    对WEB请求进行回应(渲染),视图是一个python函数,定义在views.py中
    视图接受reqeust对象作为第一个参数,包含了请求的信息
    引入信息:
    from django.http import HttpResponse(网页返回的内容)
    还有你自己定义的模型方法名称:如from booktest.models import BookInfo,HeroInfo
    (使用render()简化写代码)web响应


    11.url:
    Django 使用正则表达式匹配请求的url,一但匹配成功,调用应用的试图
    至匹配路径部分,即去除域名、参数后的字符串
    1、在项目的urls.py中配置url,跳转到指定应用中去 (一定要引入模块)
    2、在应用的url.py中配置视图的url


    12.启动服务器:
    python mange.py runserver + ip:port(+后可有可无)
    默认:127.0.0.1:8000
    如果修改文件不需要重启服务器,如果增删文件需要重启服务器


    *13.站点管理:
    1.内容发布:
    负责增、删、改内容
    2.公共访问
    django会根据定义的模型类完全自动化地生成管理模块


    14.创建管理员:
    python manage.py createsuperuser


    15.界面本地化:
    中文定制:
    编辑settings.py,设置编码、时区
    LANGUAGE_CODE = 'zh-Hans'
    TIME_ZONE = 'Asia/Shanghai'


    16.向admin注册booktest的模型

        打开booktest/admian.py文件。注册模型:
        form django.contrib import admin
            from models import xxx
        admin.site.register(xxx)
    
    
      自动实现增删改查
    

    17.自定义管理页面

    django提供了admin.ModelAdmin类
    
    from django.contrib import admin
    
    # Register your models here.
    from booktest.models import BookInfo,HeroInfo
    
    关联BookInfo对象
    
    class HeroInfoInline(admin.StackedInline):
        model = HeroInfo
        extra = 2 #额外显示关联的记录数
    
    class BookInfoAdmin(admin.ModelAdmin):
        #定义显示的列表,可以点击列头进行排序
        list_display = ['id','btitle','bpub_date']
        #定义过滤字段,过滤框会出现在右侧
        list_filter = ['btitle']
        #定义搜索字段,出现在上方
        search_fields = ['btitle']
        #分页
        list_per_page = 1
        fieldsets = [
            ('基本信息',{'fields':['btitle']}),
            ('更多信息', {'fields': ['bpub_date']}),
        ]
        inlines = [HeroInfoInline]
    
    admin.site.register(BookInfo,BookInfoAdmin)
    admin.site.register(HeroInfo)
    

    相关文章

      网友评论

        本文标题:Django开发流程

        本文链接:https://www.haomeiwen.com/subject/guyhkftx.html